char c;
char unprocessed_instruction[9];
int i;
for (i=0; i<num_tasks; i++){
c = fgetc(fp);
int j = 0;
while (c != ' '){
unprocessed_instruction[j] = c;
j = j + 1;
c = fgetc(fp);
}
char instruction[j];
for (int i=0; i<j; i++){
instruction[i] = unprocessed_instruction[i];
}
for (int i=0; i<j; i++){
printf("%c\n", instruction[i]);
}
int i = strcmp(instruction, "initiate");
printf("%i\n", i);
}
因此,代碼存儲在在有界陣列的文本文件的初始字符(圖9是任何輸入的最大尺寸),並且然後移動到一個數組返回0那是實際輸入的大小,如果它恰好較小。例如,如果輸入是「啓動」,那麼char指令[]被初始化爲大小8.這可以很好地工作,因爲我測試時打印了數組的元素,但數組和「啓動」之間的strcmp不返回0.爲什麼呢?的strcmp不上「相同」的字符串
字符串不是簡單的字符數組 –
你永遠不會終止任一字符串。你現在很幸運,你不會因爲分段錯誤或類似錯誤而崩潰。 –
您是否嘗試過'printf(「%s \ n」,instruction);'以確保字符串實際上是相同的? – immibis