char* mystr = calloc(25, sizeof(char));
fgets(mystr, 25, stdin); // I enter "6 7 *" in here, without the quotes
char* tok;
tok = strtok(mystr, " ");
while (tok != NULL) {
if(strcmp(tok, "*") == 0)
//It never meets this condition, but I don't understand why
else
//do something else here
tok = strtok(NULL, " ");
}
问题是 strcmp(tok, "*")
永远不会返回相等的值,即使 tok
从原始字符串中读取星号。我不明白为什么它永远不满足这个条件。
最佳答案
您的 *
token 可能还包含您为完成输入而键入的 \n
字符。将单个字符与以下之一进行比较:
if(tok[0] == '*')
if(strncmp(tok, "*", 1) == 0)
或将 \n
添加到分隔符列表中:
tok = strtok(NULL, " \n");
关于c - C 中 strcmp() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19419338/