[英]i am very confused about reading from txt file
對不起,我是新來的ci想從txt文件中讀取這些數據。
A 7
c 5
y 6
U 9
j 4
Z 3
z 5
0
這是我的代碼
while(feof(input)==0){
char c;
int num;
fscanf(input,"%c%d",&c,&num);
printf("%c:%d\n",c,num);
}
但結果是控制台與txt文件的結果不一樣
打開文件完成
A:7
:7
c:5
:5
y:6
:6
U:9
:9
j:4
:4
Z:3
:3
z:5
:0
我的代碼是正確的,不是嗎?
fscanf(input,"%c%d",&c,&num);
我的代碼是正確的,不是嗎
你不是在吃換行符。 改為:
fscanf(input,"%c%d ",&c,&num);
^
作為解釋,每一行以一個字符'\\n'
結尾。 如果你對它沒有做任何事情, %c
會嘗試閱讀它,你會得到令人困惑的結果。 一個便宜的技巧是在fscanf
添加一個空格,這使得它在%c%d
對之后吃掉所有空白。
根據Peter Kowalski的評論:
不應該是fscanf(輸入,“%c%d”,&c,&num); ? 我在%c和%d之間放了額外的空格
這個問題問得好。 事情是%d
是忽略領先空間的說明者之一 。 無論流中有多少空白, scanf
都會吃掉並丟棄它們。 因此%d
之前的空白是隱含的。
你還需要吃新線。
fscanf(input,"%c%d\n",&c,&num);
快速修復:只需調整printf()
語句即可
printf("%c:%d\n",c,num);
至
printf("%c %d",c,num);
還有其他方法,比如調整當前的scanf()
,這樣可以更好地解決源代碼問題(您正在閱讀並保留換行符)。
或者,您可以只讀取整行,而無需將其解析為組件並將其打印出來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.