[問題] 文字檔讀值會讀兩次
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC2010
問題(Question):
使用檔案指標來讀取一個文字檔,最後一行為換行符號,會讀兩次
程式碼(Code):(請善用置底文網頁, 記得排版)
#include<stdlib.h>
#include<stdio.h>
int main(){
FILE *fp;
double value_tmp;
fp=fopen("C:\\source_data.txt","r");
if(!fp)
exit(0)
while(!feof(fp)){
fscanf(fp,"%lf",&value_tmp); //<-這邊有問題
printf("%lf",value_tmp);
}
return 0;
}
假設我原本的文字檔內是這樣
1.5
2.6
3.6
1.8
2.7
(end of file)
因為設計的關係,所以最後一個值會再空一行
那讀值出來就會變成這樣
1.5
2.6
3.6
1.8
2.7
2.7 <-會多出現一次
我該如何解決這個問題?總不能每次都去修改文字檔,把最後一個換行符號弄掉吧?
先謝謝了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.233.78.140
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1414003960.A.678.html
推
10/23 02:55, , 1F
10/23 02:55, 1F
→
10/23 02:56, , 2F
10/23 02:56, 2F
→
10/23 02:56, , 3F
10/23 02:56, 3F
但是就算我改成
do{
......
}while(!feof(fp));
一樣是會多讀一次耶
※ 編輯: jacky1989 (118.233.78.140), 10/23/2014 02:58:08
推
10/23 07:52, , 4F
10/23 07:52, 4F
→
10/23 13:51, , 5F
10/23 13:51, 5F
→
10/23 13:52, , 6F
10/23 13:52, 6F
推
10/23 14:02, , 7F
10/23 14:02, 7F
→
10/23 18:24, , 8F
10/23 18:24, 8F
推
10/23 19:12, , 9F
10/23 19:12, 9F
→
10/23 19:13, , 10F
10/23 19:13, 10F