2012-12-15 66 views
0

我有txt文件,它有許多單詞的一行。我需要將它們全部寫入數組。我已經瀏覽了很多使用fscanf的示例,但是我無法理解它是如何工作的,因此我無法在我的程序中使用它。所以問題:我該如何創建一個可以包含所有單詞的數組,或者我應該創建一個類似於[999999]的類,並且不要擔心。如何將單詞寫入該數組,除「,」,「。」,「?」之外等等?還有一個問題,我如何衡量單詞的大小(它有多少個字符)?C - 將文字從txt寫入數組

對不起,沒有任何問題,謝謝你的幫助。

+0

你能提供一個輸入樣本和你需要做的這些詞嗎?你可以使用char **,malloc和strtok。或者,也許你只需要將它們整理成整數。所有這些關鍵字都是很好的搜索條件。 HTH。 –

+0

我需要測量第一個單詞的長度,並在控制檯中輸出txt文件中所有長度相同的單詞。但是我想我可以和其他人一起管理,如果我知道如何將這些該死的單詞放到一個數組中。 – user1906359

回答

0

未經檢測的樣本。你應該閱讀每一個這些功能。爲了確保你做到了,我故意不查找參數的順序,因爲我通常應該在某些調用中很可能猜錯了。

/* Untested Sample of "What it kinda should maybe look like" */ 
char buf[BUFSIZ]; 
fgets(stdin,buf); /*read a line*/ 
int i; 
char *p; 
for (p=buf,i=0; p+=strspn(p," .,"); i++) /*count delimiters*/; 
char **words; 
words = malloc(i+1 * sizeof(char *)); 
for (i=0, words[0]=strdup(p=strtok(buf," .,"); words[++i]=strdup(p=strtok(NULL," .,"));) /**/; 
words[++i]=NULL; 

BUFSIZ應該給你一個非常巨大的緩衝區(足夠用於任何合理的文本文件)。掃描緩衝區並對分隔符進行計數,以便很好地猜測我們可以找到的最大字數。分配一個char指針數組。用strdup將調用序列中的返回值的副本填充到strtok。對strtok的第一個調用將傳遞字符串作爲第一個參數。之後的調用傳遞NULL作爲第一個參數,意思是「保持使用相同的字符串」。另外我不確定第二次循環終止。將其視爲僞代碼。 :)

編輯:如果你有一個字符串中的字,strlen會給你的長度(不包括終止nul字節)。