gpt4 book ai didi

c - 将 strtok 与各种输入大小一起使用

转载 作者:行者123 更新时间:2023-11-30 19:33:09 25 4
gpt4 key购买 nike

所以我一直在研究一些没有完全按预期运行的代码。

下面的代码应该在仅输入“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!");
}
}

我使用了计数变量,因为可以输入更大的字符串。例如用户可以输入三个数字,或者一个字符串和三个数字等。

我也尝试过使用 strlen(array[0]) == 1 ,它仍然打印出错误消息。提前致谢!

最佳答案

这里有很多问题,但我将集中讨论 strtok 因为这就是您要问的问题。

您正在使用 fgets 从输入中读取一行,但随后仅对空格字符进行标记。每行都以换行符 (\n) 结尾,那么您想用它做什么呢?用户还可能输入制表符,在某些系统上,您可能会在行尾看到 \r 字符。所以你可能想要

token = strtok(Input, " \t\r\n");

为了对所有空白进行标记,而不仅仅是空格。

关于c - 将 strtok 与各种输入大小一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46249080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com