所以我一直在研究一些没有按预期运行的代码。
下面的代码应该在只输入'h'时调用一个帮助函数,并在输入'q'时退出。我真的不明白什么时候按'h'它会出错:
printf("\n");
printf("Please input request (h-help, q-quit): ");
fgets(Input, 256, stdin);
char *array[256];
int count = 0;
char *token = strtok(Input, " ");
array[0] = token;
count++;
while(token != NULL)
{
int i = 1;
token = strtok(NULL, " ");
array[i] = token;
i++;
count++;
}
if(count == 1)
{
if(strlen(array[0]) == 2)
{
if(array[0] == 'h')
{
TRIGhelp();
return 0;
}
if(array[0] == 'q')
{
return 0;
}
}
else
{
printf("Error: Illegal input!");
}
}
我使用了一个count变量,因为可以输入更大的字符串。例如,用户可以输入三个数字,或者字符串和三个数字等。
我尝试过使用strlen(array [0])== 1,它仍会打印出错误信息。 提前谢谢!
答案 0 :(得分:0)
这里有很多问题,但我会专注于strtok
,因为这就是你所要求的。
您正在使用fgets
从输入中读取一行,但只对空格字符进行标记。每一行都会以换行符(\n
)结束,那么你想用它做什么?用户也可以输入选项卡,在某些系统上,您可能会在行尾获得\r
个字符。所以你可能想要
token = strtok(Input, " \t\r\n");
为了对所有空格进行标记,而不仅仅是空格。