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