我正在编写简单C shell的退出部分。
int main(int argc, char*argv[]){
while(1){
char input_line[MAX], *tokens[X_MAX];
int i,n; //n is the number of tokens inside the *tokens
.
.
.//gets the input from user and stores into tokens
.
if(n ==1){
char *ex = "exit";
printf("difference: %i\n",strcmp(tokens[0],ex)); //this prints out 10
}
}
}
当他们有所不同时我会被困在那个部分,显然他们不是。我想要做的是当用户键入“exit”(存储在char数组中的“令牌”)时,if语句将其选中,然后将其与存储在“ex”中的语句进行比较。
有什么想法吗?
感谢
答案 0 :(得分:4)
很可能你没有修剪你从用户那里获得的字符串,它仍然包含换行符'\n'
。我跳到了这个条件,因为\n
在ASCII中是10。
对于修剪,我使用它:
for (p = line + strlen(line) - 1; p >= line && isspace(*p); --p)
;
p[1] = 0;
不确定我在哪里或者是我的。可能不是我的。