2014-05-03 77 views
0

如何將單詞逐字複製到數組中?此代碼僅打印文本文件的內容(句子)。我需要找到每個單詞的長度等。如果我將這些單詞複製到一個數組中,我可以簡單而輕鬆地編輯這些單詞(我是初學者)!如何將文本文件中的單詞複製到C上的數組中

#include <stdio.h> 
#include <stdlib.h> 
int main(int argc, char *argv[]) { 
FILE *myinput; 
int count=0; 
char k; 

myinput = fopen("board.txt", "rt"); 

while(k!=EOF){ 
    k = fgetc(myinput); 
    printf("%c", k); 
     } 
return 0; 
} 
+1

您的代碼有一個可怕的,可怕的錯誤:如果'K == EOF',你就不能試圖讀它,所以你的支票的順序是錯誤的。而且,'k'必須是'int'以表示'EOF'。 (所有這些都記錄在[手冊]中(http://man7.org/linux/man-pages/man3/fgetc.3.html)。) –

+0

代碼工作正常,打印文本文件中的句子時沒有任何警告! – user3599630

+0

你嘗試了什麼? – dualed

回答

0

我認爲這應該讓你去。

#include<stdio.h> 
#include<string.h> 
int main() 
{ 
    int n = 1, i = 0; 
    char arr[100][10]; 
    FILE *ptr; 
    ptr = fopen("/tmp/test.txt", "r"); 
    while(n > 0) 
    { 
     n = fscanf(ptr, "%s",arr[i]); 

     i++; 
    } 
    n = i; 
    for(i = 0; i < n - 1; i++) 
    printf("%s length:%d\n",arr[i],(int)strlen(arr[i])); 
    return 0; 
} 
+0

所有用戶投票這個偉大的答案!它工作正常! – user3599630

+0

感謝user3599630 .. :)如果這有助於你,那麼你可以接受它! – Nullpointer

+0

接受!如果你認爲這個問題可以幫助其他初學者/學生,你可以投票! – user3599630

0

您可以將整個文件讀入字符數組,然後做任何你想做的事吧:

myinput = fopen("board.txt","rt"); 
fseek(myinput,0,SEEK_END); 
int size = ftell(myinput); 
fseek(myinput,0,SEEK_SET); 
char* data = malloc(size); 
fread(data,size,1,myinput); 
fclose(myinput); 

例如,這裏是你如何計算單詞的數量(用空格隔開):

#define IS_WHITE_SPACE(c) ((c)==' ' || (c)=='\n' || (c)=='\r' || (c)=='\t') 

int GetNumOfWords(char* data,int size) 
{ 
    int i; 
    int numOfWords = 0; 
    int wordStarted = 0; 

    for (i=0; i<size; i++) 
    { 
     if (wordStarted) 
     { 
      if (IS_WHITE_SPACE(data[i])) 
      { 
       numOfWords++; 
       wordStarted = 0; 
      } 
     } 
     else 
     { 
      if (!IS_WHITE_SPACE(data[i])) 
      { 
       wordStarted = 1; 
      } 
     } 
    } 
    return numOfWords; 
} 

當然,這個簡單的任務也可以在不事先讀取整個文件的情況下實現。

但是,當涉及到更復雜的操作時,它會讓您更容易。

BTW,別忘了free(data)當你完成......

+0

您的回答非常有幫助! – user3599630

+0

@ user3599630:不客氣:) –

相關問題