2009-11-30 48 views
0

嘿那裏,我如何去複製文本文件中的文本到多維字符數組?將文本從C中的文本文件複製到字符數組?

假設文本文件(text_file.txt)含有

這是第一線

這是第二線

這是第三線

#include <stdio.h> 
int main(void){ 
FILE *f; 
f=fopen("text_file.txt","r"); 
if (f==NULL){ 
    printf("invalid!"); 
    return 1; 
    } 
else { 
    printf("successful"); 
    } 

char copied_text[80][80]; 

while (!feof(f)){ 
    int i=0,j=0; 
    fgets(copied_text[i][j],"%s",f); 
    i++; 
    } 

return 0; 
} 

- 謝謝。

回答

1

我認爲你的代碼幾乎可以工作。
只需將int的聲明移出循環即可。
將fgets的第一個參數更改爲copied_text [i],因爲它需要一個指針。
將fgets的第二個參數更改爲80,因爲它應該是一個int表示可接受的字符串長度。

#include <stdio.h> 
int main(void){ 
    FILE *f; 
    f=fopen("text_file.txt","r"); 
    if (f==NULL){ 
     printf("invalid!\n"); 
     return 1; 
    } 
    else { 
     printf("successful\n"); 
    } 

    char copied_text[80][80]; 

    int i=0; 
    while (!feof(f)){ 
     fgets(copied_text[i],80,f); 
     ++i; 
    } 

    for(int i = 0; i <3; ++i) 
     printf("%s\n", copied_text[i]); 
    return 0; 
} 
+2

'while(!feof(...))'幾乎總是錯的,這種情況也不例外。你應該改成'while(fgets(...)!= NULL)'。 – caf 2009-11-30 10:05:57

+0

還應該檢查是否輸入了不超過80行。 – 2009-12-01 14:37:55

+0

你們是對的。從工程角度來看,示例代碼中還有很多需要改進的地方。我只是試圖修改原始代碼來表達基本想法。 – Raymond 2009-12-02 01:27:08

相關問題