2014-02-20 49 views
0

我不確定爲什麼我的代碼正在執行此操作。在下面的代碼片段中,它永遠不會到達代碼的底部(printf語句以及3個自由度和-1的返回值)。即使我給它一個無效的輸入,它仍然會運行,直到它搜索到數組的所有部分,然後就像沒有問題一樣退出。程序無法到達代碼的某個部分

int findtargetline(char* targ, char* filename, int count, char** depend) { 
    char* line = malloc(160*sizeof(char)); 
    char* buffer = malloc(16); 
    FILE* fil = file_open(filename); 
    int i = 0; 

    for (i = 0; i < count; i++) { 
     if (depend[i] == NULL) { 
      printf("ERROR: MISSING DEPENDENCY DATA STRUCTURE"); 
      return -1; 
     } 
     else { 
      strcpy(line, depend[i]); 
      line = line + strspn(line, delims); 
      sscanf(line, "%s ", buffer); 

      if (strcmp(buffer, targ) == 0) { 
       free(line); 
       free(buffer); 
       fclose(fil); 
       printf("%s, and %d\n", targ, i); 
       return i; 
      } 
     } 
    } 

    printf("wtf"); 

    free(line); 
    free(buffer); 
    fclose(fil); 
    return -1; 
} 

我覺得答案應該很容易,但我沒有看到它。有人知道爲什麼D:

+0

嘗試正確縮進你的代碼 – Clark

+6

你應該先解決這個問題:'line = line + ...',因爲你以後不能'釋放(行)'。 –

+1

「你沒有問題就退出」是什麼意思?將來,您應該發佈[最小可編譯示例](http://stackoverflow.com/help/mcve)並描述您所看到的更多細節(包括任何錯誤代碼,如果適用)。 – jerry

回答

0

當您調用函數的計數爲0時,您期望什麼?

你不?你爲什麼不告訴我們?

相關問題