簡體   English   中英

C,讀取文本文件

[英]C, Reading A Text File

如果這是一個愚蠢的問題,我感到很抱歉,但是我嘗試了許多不同的資源,但仍然沒有得到想要的東西。 我正在研究一個從文本文件讀取的程序,在下面的代碼中,我試圖讀取第一行,該行將給我提供在其下創建的電阻器顏色代碼的數量。 我正在嘗試讀取數字(n)並簡單地打印以查看其讀數,但是我什么也沒得到。 看起來很簡單,但我似乎無法理解。

`FILE *fpinpt;
FILE *fpoutpt;
FILE *fpnom;
int n, *ptr;
double a, b, c, d, e, f, g, h, i, j, k, l;
fpinpt= fopen("F:\EGR 107\EE\HW 4\resistorInput.txt","r");
fpoutpt= fopen("F:\EGR 107\EE\HW 4\resistorOutput.txt","w");
fpnom= fopen("F:\EGR 107\EE\HW 4\resistorNominal.txt","w");
fscanf(fpinpt,"%d\n",n);
printf("%d",n);
ptr=(int*)calloc(n, sizeof(int));
if (fpinpt==NULL)
{
    printf("Error reading resistor file\n");
    fclose(fpinpt);
}
if (ptr==NULL) printf("Error, memory not allocated\n");

`

在你的代碼中

fscanf(fpinpt,"%d\n",n);

應該

fscanf(fpinpt,"%d",&n);

另外,請始終檢查fscanf()fopen()的返回值,以確保正確的輸入/操作。

就是說,您不需要 malloc()和family的返回值。

問題的主要原因是,您永遠不會檢查錯誤。 對於每個fopen() ,必須有一個

if (fopenedFile == NULL)
    ohNoMust_ICannotUse_fopenedFile();

現在,為什么您的fopen()失敗了是因為您沒有轉義'\\'字符,所以每個文件名都應該像這樣修復它

"F:\\EGR 107\\EE\\HW 4\\resistorInput.txt"

然后,將打開文件,但是fscanf()將無法工作,因為已經解決了其他答案(“ 在編輯我的我的代碼時 ”)。

注意

請閱讀兩個答案,重復@ SouravGhosh已經說過的話是沒有意義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM