阅读以下关于C语言编程方面的说明和程序,回答问题1至问题3,将答案填入答题纸的对应栏内。 【说明】 在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下程序,其中: 程序1是关于文件操作的一段程序。 程序2是某信息管理系统的系

admin2016-11-11  22

问题 阅读以下关于C语言编程方面的说明和程序,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
    在开发某嵌入式系统时,设计人员根据系统要求,分别编写了如下程序,其中:
    程序1是关于文件操作的一段程序。
    程序2是某信息管理系统的系统登录和密码验证程序,规定密码最长为20个字符。首先,打开密码文件sys_code,如果成功,则将文件中的密码信息与用户输入的密码进行比较,若相等,则身份验证通过并进入信息管理系统,否则输出错误信息并退出登录系统。如果打开文件sys_code失败,则由用户输入密码并保存到密码文件sys_code。
【程序1】
    #include
    #include
    Void main{}
{
    FILE*fp;
    char c,fname[20];
    printf("输入文件名:");
    scanf("%s",fname);
    if((fp=fopen(fname,"r“))==__________(1)
    {
    printf("不能打开文件:%s\n",  fname);
    exit(0);
    }
    while(__________(2))    /*检测文件是否结束*/
    {
        C=fgetc(fp);    ’
        if(___________(3))  /*检测文件是否出错*/
        {
          printf("文件读错误\n");
          break;
        }
        putchar(c);
      }
    }
【程序2】
    void password()
    {
      int sign=0;
      sign=checkcode();
      if(__________(1))
      {
        printf("\a\n\n\n\n\n\n\n\n\n\t\t密码错误,请重新登录!");
        getch();
        system("cls");
        exit(1);
      }
    system("cls");
    printf("\a\n\n\n\n\n\n\n\n\n\t\t");
    printf("欢迎登录信息管理系统!\n");
    getch();
    return;
}
int checkcode()
{
    FILE*fp;
    char ch,syspwd[21]="\0";
    char usrpwd[21]="\0";
    int i;
    /*身份验证*/
    if((fp=fopen("sys code","r"))==NULL)
    {
    system("cls");
    printf("please set your identify\n");
    printf("password(<=20):");
    for(i=0;i<20;i++){
      ch=getchar();
       if  (ch==’\r’ ||ch==’\n’)  break;
        __________(2)=ch;
      }
      fp=fopen("sys code","W");
      fputs(syspwd,fp);
      fclose(fp);
      return 0;
      }
    else{
       system("cls");
       fgetS(Syspwd,21,fp);
       fclose(fp);
       printf("please enter your password:");
       for(i=0;i<20;i++){
          ch=getchar();
          if(ch==’\r’||ch==’\n’)break;
    usrpwd=ch;
    }
    if(strcmp(__________(3))!=0)
    {
      return 1;
      }
      return 0;
      }
    }
【问题2】
    王工在编写某嵌入式程序时,用到对文件系统的操作,由于要保证系统的安全性,要求必须使用文件检测函数feof()和ferron(),完成【程序1】中的空(1)~(3),将答案写到答题纸相应的位置。

选项

答案(1)NULL或者0 (2)lfeof(fp) (3)ferror(fp)

解析 王工在编写某嵌入式程序时,用到对文件系统的操作,由于要保证系统的安全性,要求必须使用文件检测函数feof()和ferror(),完成【程序1】中的空(1)~(3),将答案写到答题纸相应的位置。
    feof()函数用于检测文件当前读写位置是否处于文件尾部。只有当当前位置不在文件尾部时,才能从文件读数据。
    函数定义:int feof(FILE*fp)
    返回值:0或非0
    如果fp所指的文件的位置处于文件尾部,返回非0;否则返回0。在对文件进行读操作前,应用这个函数测试当前位置是否在文件尾部。
    文件操作的每个函数在执行中都有可能出错,C语言提供了相应的标准函数ferror用于检测文件操作是否出现错误。
    函数定义:int ferror(:FILE*fp)
    返回值:0或非0
    Ferror函数检查上次对文件fp所进行的操作是否成功,如果成功则返回0;否则返回非0。因此,应该及时调用ferror函数检测操作执行的情况,以免丢失信息。
    【程序1】首先输入文件名,打开这个文件,如果不能打开,则输出“不能打开文件:XX”,程序退出。如果能正常打开该文件,则循环读这个文件,一次读一个字节,读取后,及时检测读操作是否出错,如果出错,报“文件读错误”,退出循环;否则输出该字符。在循环语句的判断条件中,检测文件是否结束,如果结束,则退出循环。【程序l】需要填空的三条完整语句为:
    (1)if((fp=fopen(fname,"r"))==NULL)
    (2)while(!feof(fp))  /*检测文件是否结束*/
    (3)if(ferror(fp))  /*检测文件是否出错*/
转载请注明原文地址:https://kaotiyun.com/show/HQWZ777K
0

相关试题推荐
最新回复(0)