作者peteranny (TIN)
看板b98902HW
标题[计程] feof的问题...
时间Sun Feb 7 09:28:17 2010
我想问一个c的问题...
我写了一个很简单的程式
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE*data=fopen("test.txt","r");
while(!feof(data)){
int i;
fscanf(data,"%d",&i);
printf("%d ",i);
}
system("pause");
return 0;
}
((也就是从test.txt读一个字 印一个字的意思
如果test.txt的内容是
1 2 3
那麽印出就是
1 2 3
很正常没错
可是如果test.txt的内容是
1 2 3
((这里有多一行换行
那麽印出来就是
1 2 3 3
啊这是三小!!=口=为什麽??
请强者帮忙解答...因为小弟最近帮人写程式遇到这个问题囧
是只要档案的最後有空白行就会有这种bug吗??不然要怎麽解决??
谢谢回答的人!!Orz
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.71.78.252
1F:推 telgniw:把feof判断改到fscanf和printf中间 02/07 11:04
2F:→ peteranny:int i; 02/07 11:53
3F:→ peteranny:fscanf("%d",&i); 02/07 11:53
4F:→ peteranny:while(!feof(data)){ 02/07 11:53
5F:→ peteranny: printf("%d ",i); 02/07 11:53
6F:→ peteranny: fscanf("%d",&i); 02/07 11:54
7F:→ peteranny: } 02/07 11:54
8F:→ peteranny:是这样吗?? 02/07 11:54
9F:→ peteranny:可是这样会只印出 1 2 = = 02/07 11:54
10F:推 LPH66:路人回答: 要记得feof是在读不到资料之後才会是true 02/07 12:46
11F:推 andy74139:while後面再加一个print就会是1 2 3 了 02/07 17:34
12F:→ peteranny:这样子改还是跟我原本的方式一样啊 02/08 09:13
13F:→ andy74139:我是指while的外面@@ 02/08 09:36
14F:→ peteranny:对呀...如果test是"1 2 3\n"印出来还是1 2 3 3 02/08 21:52
15F:推 LoganChien:while (1) { 02/27 11:09
16F:→ LoganChien: scanf("%d", &i); 02/27 11:09
17F:→ LoganChien: if (feof(FILEPTR)) { break; } 02/27 11:10
18F:→ LoganChien: printf("%d", i); 02/27 11:10
19F:→ LoganChien:} 02/27 11:10
20F:→ peteranny:上面这个结果好像也是一样的...txt是"1 2 3"就印成"1 2" 02/27 19:17