2013-10-30 86 views
0

這是一段代碼,其中我將帶有​​空格的字符串從文本打印到另一個txt文件中。我有一個codelist,我必須用正確的代碼來切換特定的字符串。代碼在一個數組中。我不能使編碼功能工作。 Fprintf打印代碼,然後打印的基本字符串。我想跳過這些字符串。我只需要打印代碼。我在哪裏錯過了什麼?C fprintf編碼的字符串跳過

int m; 
file = fopen("input.txt", "r"); 
while (fscanf(file, "%s", word) != EOF) {   
    for (m=0; m<j; m++) {       
     if (strcmp(word, particularwords[m]) == 0) {  
      fprintf(outfile, "%s ", code[m]); 
      continue;      
     } 
    } 
fprintf(outfile, "%s ", word); 
} 
+0

不要使用('F')'scanf'閱讀字符串(但如果你真的要,指定長度)。改用['fgets'](http://en.cppreference.com/w/c/io/fgets)。 – Kninnug

+0

你的'代碼'包含額外的'%'符號嗎? – usr2564301

+0

它只包含英文字母表中的小寫字母,但是nvm已經解決了! – Daniel

回答

1

繼續是問題。

它不是繼續for循環。

這是我認爲應該是:

int m; 
file = fopen("input.txt", "r"); 
while (fscanf(file, "%s", word) != EOF) {   
    for (m=0; m<j; m++) {       
     if (strcmp(word, particularwords[m]) == 0) {  
      fprintf(outfile, "%s ", code[m]); 
      break; //for      
     } 
    } 
    if(m==j){ //word not found! 
     fprintf(outfile, "%s ", word); 
    } 
} 
+1

我愛你,真是太棒了! – Daniel