首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求赐教!坐等援助!解决办法

2012-04-08 
求赐教!!坐等援助!!#include stdio.hint main(){FILE *fpif((fpfopen(car.txt,a+))NULL){printf

求赐教!!坐等援助!!
#include <stdio.h>
int main()
{
FILE *fp;
if((fp=fopen("car.txt","a+"))==NULL)
{
printf("无法打开文件car.txt,无法进行本次录入工作!\n");
exit(0);
}

while(!feof(fp))
{
printf("++++++++++++++++++++++++++++++++++\n");
//死循环了???
}
fclose(fp);
}

[解决办法]

C/C++ code
char ch=fgetc(fp);//为空并不代表文件读取结束,你都没有读取,程序也不能进行是否已结束的判断,所以在循环中加个这个试试
[解决办法]
这是因为你的指针没有移动,在循环中加个 char c = fgetc(fp);
[解决办法]
空文件并不代表文件已经结束,你指针都没移动,还没开始读,怎么知道是否已结束。。。。即便是空文件也不能通过你那种方式去判断
[解决办法]
EOF只是个宏定义,
在stdio.h 头文件中定义的
C/C++ code
#define EOF     (-1)
[解决办法]
当然是死循环啦
feof()仅仅是判断文件是否到结尾
你的while里面又没有任何文件操作,所以每次循环feof()结果不会改变
因此你的程序要不就是不进入while循环,要不就是进入循环后不出不来的死循环
[解决办法]
C/C++ code
#include <stdio.h>#include <stdlib.h>int main(){    FILE *fp;    char ch;    if((fp=fopen("car.txt","r"))==NULL)    {        printf("无法打开文件car.txt,无法进行本次录入工作!\n");        exit(0);    }        while((ch=fgetc(fp))!=EOF)    {        printf("++++++++++++++++++++++++++++++++++\n");            //死循环了???    }    fclose(fp);}
[解决办法]
C/C++ code
#include <stdio.h>#include <stdlib.h>int main(){    FILE *fp;    char ch;    if((fp=fopen("car.txt","r"))==NULL)    {        printf("无法打开文件car.txt,无法进行本次录入工作!\n");        exit(0);    }        //     while((ch=fgetc(fp))!=EOF)    //     {    //         printf("++++++++++++++++++++++++++++++++++\n");    //         //         //死循环了???    //     }        while (!feof(fp))    {        printf("++++++++++++++++++++++++++++++++++\n");        ch=fgetc(fp);            }    fclose(fp);} 

热点排行