可读可执行的C语言简历源文件

这里黑客新闻吗?作者用代码更新了自己的简历,是不是很接地气,特符合程序员的逼格。这是一份可读可执行的C语言源文件,也是作者编码风格的体现。

C语言天才写的一份简历

#include <stdio.h>
#include <time.h>

typedef struct {
  union {
    char * company;
    char * school;
    char * project;
  };
  union {
    char * location;
    char * url;
  };
  union {
    char * title;
    char * program;
  };

  time_t started;
  time_t left;

  char * description[];
} thing_t;

typedef thing_t job_t;
typedef thing_t school_t;
typedef thing_t project_t;

#define CURRENT 0 /* I wasn't alive at the Unix epoch, so that'll work */ /* Contact Information */ char * name = "Kevin R. Lange";
char * email = "klange@toaruos.org";
char * address = "1045 Mission St, Apt 440n" "San Francisco, CA 94103";

/* Education */
school_t uiuc = {
  .school  = "University of Illinois at Urbana-Champaign",
  .location = "Urbana, IL",
  .program = "BS Computer Science",
  .started = 1251158400,
  .left   = 1336608000,
  .description = {
    "Minor in International Studies in Engineering, Japan",
    "Focused on systems software courses",
    NULL
  }
};

school_t hit = {
  .school  = "Hiroshima Institute of Technology",
  .location = "Hiroshima, Japan",
  .program = "Study Abroad",
  .started = 1274745600,
  .left   = 1278288000,
  .description = {
    "Cultural exchange program",
    NULL
  }
};

school_t * schools[] = {
  &uiuc,
  &hit,
  NULL
};

/* Projects */
project_t compiz = {
  .project = "Compiz Window Manager",
  .url   = "http://compiz.org",
  .title  = "Developer",
  .started = 1201392000,
  .left  = 1264291200,
  .description = {
    "Minor plugin contributor",
    "Various research projects",
    NULL
  }
};

project_t toaruos = {
  .project = "ToAruOS",
  .url   = "https://github.com/klange/toaruos",
  .title  = "Lead",
  .started = 1295049600,
  .left  = CURRENT,
  .description = {
    "Hobby x86 Unix-like kernel and userspace",
    "Advanced in-house GUI with compositing window manager",
    NULL
  }
};

project_t * projects[] = {
  &toaruos,
  &compiz,
  NULL
};

/* Employment History */

job_t yelp = {
  .company = "Yelp, Inc.",
  .location = "San Francisco, CA",
  .title  = "Software Engineer, i18n",
  .started = 1339977600,
  .left   = CURRENT,
  .description = {
    "Developed several internal tools and libraries",
    "Provided critical input and design work for Yelp's launch in Japan",
    NULL
  }
};

job_t apple_internship = {
  .company = "Apple Inc.",
  .location = "Cupertino, CA",
  .title  = "Software Engineering Intern",
  .started = 1306886400,
  .left   = 1314662400,
  .description = {
    "Built software framework for testing and verification of desktop retina display modes",
    "Assisted other interns with Unix fundamentals",
    NULL
  }
};

job_t * jobs[] = {
  &yelp,
  &apple_internship,
  NULL
};

void print_thing (thing_t * thing) {
  char started[100];
  char left[100];
  struct tm * ti;
  int i = 0;

  printf ("%s at %s - %sn", thing->title, thing->company, thing->location);

  ti = localtime (&thing->started);
  strftime (started, 100, "%B %d, %Y", ti);

  if (thing->left == CURRENT) {
    printf ("%s to nown", started);
  } else {
    ti = localtime (&thing->left);
    strftime (left,  100, "%B %d, %Y", ti);
    printf ("%s to %sn", started, left);
  }

  char ** desc = thing->description;
  while (*desc) {
    printf ("- %sn", *desc);
    desc++;
  }
}

int main (int argc, char ** argv) {

  printf ("%sn%sn%snn", name, email, address);

  puts ("Educationn");
  school_t ** s = schools;
  while (*s) {
    print_thing (*s);
    puts ("");
    s++;
  }

  puts ("Employmentn");
  job_t ** j = jobs;
  while (*j) {
    print_thing (*j);
    puts ("");
    j++;
  }

  puts ("Projectsn");
  project_t ** p = projects;
  while (*p) {
    print_thing (*p);
    puts ("");
    p++;
  }

  return 0;
}

网友 Wossoneri 编译后,我们看到的简历

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Windows系统下使用C语言编写单线程的文件备份程序

    写在最前方 源路径:即 From-Path,你准备要备份的资料 目的路径: 即 To-Path,你准备要存储备份的资料的地方 稍微回想一下,上一次写的代码,本次的任务是遍历目录及其子目录,那么这回要干的就是将上次遍历过的数据,挪一下窝,到我们想要他们去的位置. 这涉及到两个操作,遍历 和 拷贝,前一个动作我们在上一回已经实现了,只需做小小的改动,就能够使用.后一个动作也是需要靠 Windows API来完成,至于哪些,稍后再提. 现在先让我们完成一个魔法,3, 2, 1!: do{ puts("

  • C语言 以字符串的形式读写文件详解及示例代码

    fgetc() 和 fputc() 函数每次只能读写一个字符,速度较慢:实际开发中往往是每次读写一个字符串或者一个数据块,这样能明显提高效率. 读字符串函数fgets fgets() 函数用来从指定的文件中读取一个字符串,并保存到字符数组中,它的原型为: char *fgets ( char *str, int n, FILE *fp ); str 为字符数组,n 为要读取的字符数目,fp 为文件指针. 返回值:读取成功时返回字符数组首地址,也即 str:读取失败时返回 NULL:如果开始读取时

  • C语言以数据块的形式读写文件实例代码

    fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread 函数:相应地写入函数为 fwrite. fread() 函数用来从指定文件中读取块数据.所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制.fread() 的原型为: size_t fread ( void *ptr, size_t size, size_t count, FILE *fp ); fwri

  • C语言 文件的打开与关闭详解及示例代码

    在C语言中,文件操作都是由库函数来完成的,这节介绍文件的打开和关闭. 文件的打开(fopen函数) fopen() 函数用来打开一个文件,它的原型为: FILE *fopen(char *filename, char *mode); filename为文件名(包括文件路径),mode为打开方式,它们都是字符串.fopen() 会获取文件信息,包括文件名.文件状态.当前读写位置等,并将这些信息保存到一个FILE类型的结构体变量中,然后将该变量的地址返回. FILE是在stdio.h头文件中定义的一

  • C语言 以字符形式读写文件详解及示例代码

    在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块).本节介绍以字符形式读写文件. 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中写入一个字符.主要使用两个函数:fgetc()和fputc(). 字符读取函数 fgetc fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符.它的原型为: int fgetc (FILE *fp); fp 为文件指针.fgetc() 读取成功时返回读取到的字符,

  • C语言 文件的随机读写详解及示例代码

    前面介绍的文件读写函数都是顺序读写,即读写文件只能从头开始,依次读写各个数据.但在实际开发中经常需要读写文件的中间部分,要解决这个问题,就得先移动文件内部的位置指针,再进行读写.这种读写方式称为随机读写,也就是说从文件的任意位置开始读写. 实现随机读写的关键是要按要求移动位置指针,这称为文件的定位. 文件定位函数rewind和fseek 移动文件内部位置指针的函数主要有两个,即 rewind() 和 fseek(). rewind() 用来将位置指针移动到文件开头,前面已经多次使用过,它的原型为

  • 用C语言实现从文本文件中读取数据后进行排序的功能

    功能介绍 程序的功能是从外部读取一个包括int型数据的文本文件,然后将它保存到内部临时数组,对数组进行排序后,以文本形式输出到指定的文件上.因为是int类型的数据,没有很严重的损失精度的问题. 正常运行要求: 包括数据的源文件内不能包括其他任何除数字和空白字符(空格,制表符,换行符)之外的任何字符,源文件最开始必须是数字字符,要保证源文件的数据计数正确.同时保证文件名有效. 运行结果 data.txt: obj.txt: 完整代码 警告:版权所有,谨供参考! #include <stdio.h>

  • C语言文件操作 fopen, fclose, mkdir详解

    1.建文件夹 int _mkdir(const char *path,mode_t mode); 函数名: _mkdir 功 能: 建立一个目录 用 法: int _mkdir( const char *dirname ); 头文件库:direct.h 返回值:创建一个目录,若成功则返回0,否则返回-1 ===================================================== 2.打开文件fopen() 函数功能: 打开一个文件 函数原型:FILE * fope

  • C语言怎么获得进程的PE文件信息

    一.打印Sections信息.下面的程序打印出Windows_Graphics_Programming 1.1中第三个程序"Hello World Version 3:Create a Full-Screen Window"生成的可执行文件的Sections结构字节的信息 #include<stdio.h> #include<windows.h> char *strPath="C:/c1_hwv3/Debug/c1_hwv3.exe"; in

  • C语言压缩文件和用MD5算法校验文件完整性的实例教程

    使用lzma SDK对7z文件简单解压缩 有时候我们只需要单纯对lzma算法压缩的7z文件进行解压,有时需要在嵌入式设备上解压,使用p7zip虽然支持多种格式,但是不容易裁剪,使用lzma SDK是首选: 可以在这里找到各种版本:http://zh.sourceforge.jp/projects/sfnet_sevenzip/releases/ 我下载了4.65版本,这个对文件名编码支持没有9.20的好,中文可能有问题,但是我的需求不需要支持中文文件名,所以足够用了. 解压后先看一下7z这个工程

  • C语言 以数据块的形式读写文件详解及实现代码

    fgets() 有局限性,每次最多只能从文件中读取一行内容,因为 fgets 遇到换行符就结束读取.如果希望读取多行内容,需要使用 fread 函数:相应地写入函数为 fwrite. fread() 函数用来从指定文件中读取块数据.所谓块数据,也就是若干个字节的数据,可以是一个字符,可以是一个字符串,可以是多行数据,并没有什么限制.fread() 的原型为: size_t fread ( void *ptr, size_t size, size_t count, FILE *fp ); fwri

  • C语言 格式化读写文件详解

    fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器,而是磁盘文件. 这两个函数的原型为: int fscanf ( FILE *fp, char * format, ... ); int fprintf ( FILE *fp, char * format, ... ); fp 为文件指针,format 为格式控制字符串,... 表示参数

随机推荐