找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2173|回复: 0
打印 上一主题 下一主题
收起左侧

项目总结

[复制链接]
跳转到指定楼层
楼主
ID:72008 发表于 2015-1-11 23:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
拿到这个项目的时候,我第一反应是用链表嵌套链表的结构,这样对于各项功能的实现都很方便,结果后来还是没弄出来,白白浪费了一天的时间。我的逻辑思维是没错的,但是这个链表嵌套链表还是有很大难点的,等不忙了再研究研究。
大多数的错误就是段错误,最典型的是理武兄的问题,链表head没有开空间,还有一个典型错误是数组赋值 ,一定要加&,不加&编译时不会报错,但是运行会出现段错误。还有就是坑了我的错误命令gcc –o main.c a.out –Wall。
我犯的最大的小错误,是在读取文件的时候,想判断管理员密码是否为’”\0”,如果是”\0”,则默认初始密码,如果不为0,则将文件中保存密码赋值给管理员,我的源代码是这样的
int load(stu_t *head,char (*admin)[30]){
       stu_t*cur = NULL,*cur2=NULL;
       FILE*fp = NULL;
       charad_pass[30] = "\0";
       inti=0;
       if(NULL== head){
              return;
       }
       fp=fopen("data","a+");
       if(NULL== fp){
              fclose(fp);
              return1;
       }
       fread(ad_pass,sizeof(char)*30,1,fp);
       //读取管理员密码
       if(ad_pass,!= ‘\0’){
              strcpy(admin[1],ad_pass);
              for(i=0;admin[1][ i]!= '\0';i++){
                     admin[1][ i]-= 'a';
                     //管理员密码解密,每一位减'a'
              }
       }
……省略
咋一看,觉得没错,编译也没报错,但是就是管理员账户密码一直无法登陆,后来在老师的指引下,我知道了自己犯的错误。其中还发现一个严重的问题,就是我的语言组织能力不好,不能一句话切入重点,就像毛毛说的,总是有很多铺垫。。。。正确的代码应该是下面这样,ad_pass 是一个字符数组,ad_pass是首地址,我要判断它是否为空,应该比较两个数组才对,可是我判断的是首地址。。。。然后就这么错了。
if(strcmp(ad_pass,"\0") != 0){
strcpy(admin[1],ad_pass);
              for(i=0;admin[1][ i]!= '\0';i++){
                     admin[1][ i]-= 'a';
                     //管理员密码解密,每一位减'a'
              }
还有,今天写验证码函数,又写错了,一直提示验证码输入错误。还有每个函数都要 有入参验证,其他的就没什么了,有些第一次遇到的问题,也根据自己的经验写出了算法。总的来说,还是相对轻松的。
还有一个面试官可能问到的问题,大概程序如下:
2.int main(){
       stu_t *user = NULL,cur = NULL;
      
if(use(create(sizeof(stu_t)))!=0){
func1();……
func2……
inserte_head(user,cur);
}
问:user是否为空?
user 没有赋值语句,没有开空间,当然是空的,不能被表面现象蒙蔽了双眼。
还有一个问题,就是写一个函数,修改指针的值,一定要是指向指针的指针。逐级加一个指针。这个是我们老师曾经这么干过,

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表