我有一些代码用于读取从文件中读取的字符数组中的前3个字符,然后它正在工作而不会改变任何东西停止工作。 '命令' char数组用于保存"和"但现在经常持有"add▒"有时"和0"但是我只宣称它长了3个,但仍然设法保持更多。是否有一些我缺少的背景?
//原来这个工作
for (i = 0; i < 3; i++){
command[i] = line[i];
}
/*Interpret AND or ADD or JMP */
if (strcmp(command,"and") == 0){
hexLine[0] = changeHex(5);
}else if (strcmp(command,"add") == 0){
hexLine[0] = changeHex(1);
}else if (strcmp(command,"jmp") == 0){
hexLine[0] = changeHex(12);
}
printf("%s", command);
//现在没有工作
for (i = 0; i < 3; i++){
command[i] = line[i];
}
/*Interpret AND or ADD or JMP */
if (strcmp(command,"and") == 0){
hexLine[0] = changeHex(5);
}else if (strcmp(command,"add") == 0){
hexLine[0] = changeHex(1);
}else if (strcmp(command,"jmp") == 0){
hexLine[0] = changeHex(12);
}else if (strcmp(command,"ld ") == 0){
hexLine[0] = changeHex(2);
}
printf("%s", command);
答案 0 :(得分:1)
您的for
循环会复制3个字符,但不会终止command
。所以strcmp
不会按照你想要的方式行事。在command[i] = 0;
循环后放置for
。
for (i = 0; i < 3; i++){
command[i] = line[i];
}
command[i] = `\0';
正如@Klaus在他的评论中指出的那样:上面的for
循环假设您总是有3个有效字符要复制。当然,command
必须是至少包含4个字符的数组。
答案 1 :(得分:0)
您需要在命令char数组
的末尾放置终结符\ 0for (i = 0; i < 3; i++){
command[i] = line[i];
}
command[i + 1] = '\0';