所以我目前正在為我的作業學習檔案處理,我想知道為什么這段代碼
#include<stdio.h>
int main(){
char test[255];
FILE *open;
open = fopen("data.txt", "r");
while(fscanf(open, "%s", test)!=EOF){
printf("%s", test);
}
}
作業時以下一個
#include<stdio.h>
int main(){
char test[255];
FILE *open;
open = fopen("data.txt", "r");
fscanf(open,"%s", test);
printf("%s", *test);
}
沒有,任何答案將不勝感激!
uj5u.com熱心網友回復:
由于這條線,您的第二個解決方案不起作用:
printf("%s", *test);
您提供text[]as 引數的第一個字符,并printf()嘗試將其用作其格式的指標"%s"。這是未定義的行為。很可能此時您的程式崩潰了。
洗掉取消參考運算子*,它將在最多輸出一個非空白字符序列的意義上起作用:
printf("%s", test);
uj5u.com熱心網友回復:
成功時,fscanf()函式回傳讀取的值的數量,出錯或檔案結束時回傳EOF或-1
現在如果你不把這個函式放在一個while回圈中,它只會讀取一個字符。本質上,只要文本檔案中有資料要讀取,我們就希望它運行,所以我們把它放在一個 while 回圈中,所以只要檔案有資料要讀取,它就不會回傳EOF或 a-1所以它會保持在執行和從檔案中讀取資料。
如需進一步解釋,請檢查C 中的 fscanf() 函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406083.html
標籤:
