strcmp没有';t在'上返回0;相同';串 charc; char未处理的_指令[9]; int i; 对于(i=0;i

strcmp没有';t在'上返回0;相同';串 charc; char未处理的_指令[9]; int i; 对于(i=0;i,c,strcmp,C,Strcmp,例如,输入为“initiate”,则char指令[]为 初始化为大小8 您无法将其传递给strcmp,因为strcmp需要以null结尾的字符串。因为字符串“initiate”中有8个字符,存储该字符串的数组的大小必须至少为9,以便为空终止符留出空间,空终止符应位于最后一个字符之后。字符串不是简单的字符数组。您从未以空终止任何一个字符串。您当前很幸运没有因分段错误或类似错误而崩溃。您是否尝试了printf(“%s\n”),指令);以确保字符串实际上是相同的?@dbalagula23详细信息:我希

例如,输入为“initiate”,则char指令[]为 初始化为大小8


您无法将其传递给
strcmp
,因为
strcmp
需要以null结尾的字符串。因为字符串“initiate”中有8个字符,存储该字符串的数组的大小必须至少为9,以便为空终止符留出空间,空终止符应位于最后一个字符之后。

字符串不是简单的字符数组。您从未以空终止任何一个字符串。您当前很幸运没有因分段错误或类似错误而崩溃。您是否尝试了
printf(“%s\n”),指令);
以确保字符串实际上是相同的?@dbalagula23详细信息:我希望您没有通过简单地更改数组大小来“修复”它。从8到9是不够的。
指令[]
仍然需要一个空字符,正如这个答案所说。
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);
}