美文网首页
项目注意点

项目注意点

作者: b6aed1af4328 | 来源:发表于2016-11-01 22:16 被阅读8次
    1. 定义一个结构体指针时,一定要给定明确指向。要么malloc,要么head,head->next,要么NULL,决不能空在那。不给指向再用该指针,很容易造成系统蹦的。
    2. 要考虑清分几种情况。碰到的大多数问题是NULL->next后直接崩溃。而这个问题在把函数的几种情况都用if语句考虑进去后,所需查的也只有for循环的条件判断语句了,检查起来,轻车熟路。
    3. 千万千万不要重复读取,因为读取时用的malloc,重复读取用新的malloc,新的地址。在写教师自身信息查看等需用到节点地址的地方,重复读取,容易造成地址传递失灵。
    4. 大纲大纲很重要!非常重要!
    5. ++作为单目运算符,优先级很高,但是是先取值,后计算的。
    6. static要考虑局部变量、全局变量、函数3种情况,而我只考虑了2种。
    7. 指针的指针在你调用函数时传递的为地址,而地址已改变,你不想返回时,用指针的指针。
      要想改变值,就传指针;要想改变指针,就传指针的指针。--由天才HXW提供。
    8. 宏定义和函数指针在成绩排序时很好用,毕竟数学、语文、C、总成绩的排序大部分相同,只有中间的if判断不同。用带参宏定义和函数指针可以节省不少行代码。
    9. 密码遮掩可用getch(),但使用该函数需要conio.h头文件,该头文件在linux下没有。找到了一种替代办法:先用system("stty -echo“)不显示输入内容,再用system("stty echo")恢复显示输入内容。
    void secretScanf(char *str,int size)//借助stty-echo实现密码输入
    {
        int i=0;
        for(i=0;i<size;i++)
        {
            system("stty -echo");
            str[i]=getchar();
            printf("*");
            if(str[i]=='\n')
            {
                break;
            }
        }   
            if(str[i]=='\n')
            {
                str[i]='\0';
            }
            else
            {
                str[i]='\0';
                while(getchar()!='\n');
            }
            system("stty echo");
    }
    
    1. 验证码 需要time.h头文件和rand函数。
    void secureCode()//验证码 
    {
        char securityCode[20];
        char code[5][20]={"nishini","bushini","sheishini","haishini","zhishini"};
        int i;
        srand((unsigned)time(NULL));
        i=rand()%5;
        printf("请输入验证码:%s\n",code[i]);
        myScanf(securityCode,20);
        while(strcmp(securityCode,code[i])!=0)
        {
            printf("验证码错误,请重新输入\n");
            i=rand()%5;
            printf("请输入验证码:%s\n",code[i]);
            myScanf(securityCode,20);
        }
        return;
    }
    

    相关文章

      网友评论

          本文标题:项目注意点

          本文链接:https://www.haomeiwen.com/subject/btxvuttx.html