我有txt文件,它有許多單詞的一行。我需要將它們全部寫入數組。我已經瀏覽了很多使用fscanf的示例,但是我無法理解它是如何工作的,因此我無法在我的程序中使用它。所以問題:我該如何創建一個可以包含所有單詞的數組,或者我應該創建一個類似於[999999]的類,並且不要擔心。如何將單詞寫入該數組,除「,」,「。」,「?」之外等等?還有一個問題,我如何衡量單詞的大小(它有多少個字符)?C - 將文字從txt寫入數組
對不起,沒有任何問題,謝謝你的幫助。
我有txt文件,它有許多單詞的一行。我需要將它們全部寫入數組。我已經瀏覽了很多使用fscanf的示例,但是我無法理解它是如何工作的,因此我無法在我的程序中使用它。所以問題:我該如何創建一個可以包含所有單詞的數組,或者我應該創建一個類似於[999999]的類,並且不要擔心。如何將單詞寫入該數組,除「,」,「。」,「?」之外等等?還有一個問題,我如何衡量單詞的大小(它有多少個字符)?C - 將文字從txt寫入數組
對不起,沒有任何問題,謝謝你的幫助。
未經檢測的樣本。你應該閱讀每一個這些功能。爲了確保你做到了,我故意不查找參數的順序,因爲我通常應該在某些調用中很可能猜錯了。
/* 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字節)。
你能提供一個輸入樣本和你需要做的這些詞嗎?你可以使用char **,malloc和strtok。或者,也許你只需要將它們整理成整數。所有這些關鍵字都是很好的搜索條件。 HTH。 –
我需要測量第一個單詞的長度,並在控制檯中輸出txt文件中所有長度相同的單詞。但是我想我可以和其他人一起管理,如果我知道如何將這些該死的單詞放到一個數組中。 – user1906359