我不知道为什么我的字符串比较没有正确比较。这是给C的。
它是从这样设置的文件中读取的:
1 - ls
2 - cd
3 - history
如果输入!c,则假定获取以'c'开头的最后一个使用的字符串并运行命令。但是,它永远不会进入if(strcmp(())= 0)行。
我的部分代码在这里:
char currLine[MAXINPUTLINE];
else if (isalpha(input[1])){
int count = 1;
fileRead = fopen(".simpleshell_history", "r");
while(fscanf(fileRead, "%s\n", currLine) != EOF){
printf(input+1);
printf(currLine);
if(strcmp((input+1), currLine) == 0){
printf("%s\n", currLine);
parse(currLine);
}
}
}
这就是while循环中的printf所打印的内容,我不知道如何解决该问题,并且我已经坚持了一段时间。这是当我输入'!c'
c
1c
-c
lsc
2c
-c
cdc
3c
-c
historyc
4c
-c
!c!c
如果input
是字符串,!c
并且您希望将其与行匹配,2 - cd
则必须小心。strcmp
绝对不会起作用,因为只有在比较的两个字符串完全匹配时,它才会返回成功。
为了测试一个字符串(cd
)是否以另一字符串()开头c
,您想使用strncmp()
,这将限制要比较的字符数。
另外:你需要小心从开始的第二个字符比较input
(跳过!
),并从第五个字符currLine
(跳过2 -
字符)。
这应该使您到达那里:
while (fgets(currLine, sizeof currLine, fileRead) != NULL) {
printf(input+1);
printf(currLine);
if (strncmp(input + 1, currLine + 4, strlen(input)-1) == 0) {
printf("%s\n", currLine);
parse(currLine);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句