[英]C - Nested loop using strtok
我正在嘗試使用strtok將文本文件拆分為可以傳遞給拼寫檢查功能的字符串,該文本文件包含諸如'\\ n','?!等字符。 等等...我需要打印所有未通過拼寫檢查的單詞以及它們所在的行號。 我一直在努力跟蹤生產線。 到目前為止,我已經嘗試過了,但是它只返回文本文件第一行的結果:
char str[409377];
fread(str, noOfChars, 1, file);
fclose(file);
int lines=1;
char *token;
char *line;
char splitLine[] = "\n";
char delimiters[] = " ,.?!(){}*&^%$£_-+=";
line = strtok(str, splitLine);
while(line!=NULL){
token = strtok(line, delimiters);
while(token != NULL){
//print is just to test if I can loop through all the words
printf("%s", token);
//spellCheck function & logic here
token = strtok(NULL, delimiters);
}
line = strtok(NULL, splitLine);
lines++
}
是否可以使用嵌套的while循環和strtok? 有更好的方法來跟蹤行號嗎?
您可以使用strtok,但是使用起來並不容易。 這是一個愚蠢的函數,它真正要做的就是用nul替換定界符,並返回一個指針,該指針指向已定界的序列的開頭。 因此具有破壞性。 它不能處理特殊情況,例如英語單詞被允許一個撇號(我們是一個單詞,我們不是),您必須確保列出所有分隔符。
最好自己編寫mystrok,這樣您才能了解它的工作原理。 然后將其用作您自己的單詞提取器的基礎。
造成該錯誤的原因是,您砍掉了第一行,然后這就是在隨后的調用中strok看到的全部內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.