作者lachu ( )
看板b98902HW
标题Re: [计程] feof的问题...
时间Sun Feb 7 16:04:37 2010
※ 引述《peteranny (TIN)》之铭言:
: 我想问一个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
读"1 2 3"这个档案
第三次的fscanf(data,"%d",&i);执行完时
data会指到3的後面那一个位元
也就是到档案的结尾了
但是在"1 2 3\n"中
第三次的fscanf(data,"%d",&i);执行完时
data是指到3後面的换行
也就是还没到eof
就会执行第四次的fscanf(data,"%d",&i);
他读不到东西,所以i的值就没有被改变
还是3
你如果只读数字的话可以改成
int i;
while(fscanf(data,"%d",&i)==1){
printf("%d ",i);
}
//fscanf的return value是成功读到几个数
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.62.202.99
1F:推 peteranny:拉球大人!!m(>_<)m原来如此谢谢@@ 02/07 17:36