项目注意点

2016-11-01  本文已影响8人  b6aed1af4328
  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;
}
上一篇下一篇

猜你喜欢

热点阅读