为什么我的 fscanf() 会进入无限循环?

Why does my fscanf() go into an endless loop?

提问人:Anil 提问时间:11/15/2021 更新时间:11/15/2021 访问量:44

问:

    #define F_PWD_FSCANF  "%05d%30[^\n]%15s%25s%30s\n"
    #define F_PWD_FPRINTF "%05d%-30s%-15s%-25s%-30s\n"    
    
int main(){
    FILE *fp=fopen(FILENAME(F_PWD),"a+");  

            if (!fp)               
            {
                perror("ERROR:");
                FreeMalloc(pw,pw_t);
                exit(EXIT_FAILURE);
            }

    while(!feof(fp))
                {
                    count++;
                    fscanf(fp,F_PWD_FSCANF,&pw_t->id,pw_t->name,pw_t->userID,pw_t->pwd,pw_t->emailID);
    
                    if ((strcmp(pw->userID, pw_t->userID)==0) || (strcmp(pw->emailID, pw_t->emailID)==0))
                    {
                        printf("\n[%s]-[%s] ",pw->userID,pw_t->userID);
                        printf("\n[%s]-[%s] ",pw->emailID,pw_t->emailID);
                        COLOR(RED);
                        ToastMsg(TOAST_MSG_USER_EMAIL_EXISTS, row_x, col_y,1500);
                        COLOR(YEL);
                        ToastMsg( TOAST_MSG_OPTION, row_x, col_y,0);
                        retVal=1;
                        while_loop=false;
                        break;
                    }
                     printf("\neof loop");
                }
return 0;
}

使用 fprintf() 创建的文件

00001Anil Dhar anil1960 -N[VY&# [email protected] 00002Rita Dhar anil1960 -_VaN&# [email protected] 00003Shailja Dhar shailja1960 -'UNVYWN&# [email protected]


00004Tony P Singh tony1234 -a[f ! [电子邮件保护]

但是,我无法使用 fscanf() 读取此文件,因为它不满足 eof 条件。结果,它进入了一个无休止的循环。

fprintf() 和 fscanf() 格式说明符被定义为预处理器 dietcrivers。

代码有什么问题?

C GCC 扫描 feof

评论


答: 暂无答案