第一个C语言“作品”

. 4 min read

经过两个下午的边学边抄边写,第三人称终于写完了第一个C语言“作品”,称之为作业总觉得别扭,因为自上学以来没有如此认真对待过一门作业。作业的要求是做出一个火车票管理系统,早让我们做的话12306的数据库也不会泄露。

这是个玩笑,然而就这么个简单的东西,对于第三人称这样没有任何开发经验的孩子来说也是有点挑战的。
学习C语言是在开学半个学期后加的课程,作为非计算机专业的学生,来自不同学院的几十个人走到一起,一周三节晚上的课,包括讲课和练习,8周时间讲完了C语言的整个体系,这样的节奏老师和学生也都蛮拼的,毕竟少有人在晚上听完课还有时间去练习的。比如指针这块也仅仅有两节课。第三人称是尽力不缺课了,然而这样还是落了3节课,导致整个体系没有构建完整。在最忙的时候一个晚上有三门课要上,六点上完白天最后一节课,六点半就要开始晚上的课,路过餐厅带了晚饭在路上就解决了,上到一半就得中途翘课去另一门课打卡签到。就这样学完了C语言,脑袋里的东西支离破碎,然而作业迫在眼前,几门考试接踵而至,来不及弄清楚所有就得动手。自然,“二把刀”的水平做起东西来肯定没办法得心应手,何况很多需要的东西没理解或者压根没讲到。让“烧锅炉”专业等一群连业余都算不上的新手去写代码,实在是难为。本来这个项目是5个人一组来完成的,实际上所有代码都出自第三人称一人之手。

想起一句话,我就把它写到了项目介绍的文档里:“一个人走的快,跟团队走的远。”其实第三人称的本意是:拖四头猪看你怎么走,爬都困难。周六是提交源码和项目文档以及答辩PPT的截止时间,第三人称一个人坐在图书馆的机房里给五个人整理文档并提交。宿舍宽带是不在校园网内的。九点多钟一个人拎着方便面回宿舍。

无力吐槽了,下面贴一段第三人称在写代码过程中遇到的小问题。

这段是为了比较列车发出时刻和当前时间,然后根据此返回1或者0,从而确定能否购票或退票。

_Bool Compare_Time(char *s) {
//布尔型函数到底怎么写。这样写Xcode认,VS是不认的,VS要”bool”。甚是不解。
//最后提交作业就用宏定义了个判断编译器 
/*
//第三人称困惑的是注释掉的这段可以编译,但运行时就crash了,调试一个下午没办法 
//尝试了后面的方式声明竟然就可以了。 
char YY[4] = { 0 }; 
char MM[2] = { 0 }; 
char DD[2] = { 0 }; 
char HH[2] = { 0 }; 
char MIN[2] = { 0 };
*/ 
char *YY=0;
char *MM=0;
char *DD=0;
char *HH=0;
char *MIN=0;
YY = (char *)malloc(10);
MM = (char *)malloc(10);
DD = (char *)malloc(10);
HH = (char *)malloc(10);
MIN = (char *)malloc(10); 
/*开始当前日期和时间的获取*/
time_t Current_Time;
time(&Current_Time); 
/*结束当前日期和时间的获取*/
/*开始对传入字符串的处理*/
//下面的写法是不是太幼稚?
sscanf(s, "%4s", YY); //获取年
sscanf(s, "%*5s%[^-]", MM);//取月
sscanf(s, "%*5s %*[^-] %*1s %s", DD);//取天
sscanf(s, "%*5s %*[^-] %*1s %*[^@] %*1s %[^:]", HH); //取小时
sscanf(s, "%*5s %*[^-] %*1s %*[^@] %*1s %*[^:] %*1s %s[1-9]", MIN);//取分钟
struct tm *trans_time; //对传入的日期(形如2014-12-28@18:13的字符串)的处理 
trans_time = (struct tm *)malloc(sizeof(struct tm));
trans_time->tm_year = atoi(YY) - 1900; 
trans_time->tm_mon = atoi(MM) - 1; trans_time->tm_mday = atoi(DD); trans_time->tm_hour = atoi(HH); 
trans_time->tm_min = atoi(MIN); 
trans_time->tm_sec = 0; 
time_t raw_trans; //声明了个time_t类型的变量 
raw_trans = mktime(trans_time);
//将tm结构体时间转换成time_t类型 /*结束对传入字符串的处理*/ 
if (raw_trans > t + 7200) 
    return 1; 
else
   return 0; }

2015-01-26更新:

感谢大致、大D,D大的指导,心中的小疑惑终于解开!