gpt4 book ai didi

c - strtok() 读取字符串末尾的空格并且不返回 NULL

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:55 26 4
gpt4 key购买 nike

我正在使用 fgets() 读取一行包含由空格分隔的整数值,如下所示:

while(fgets(str, sizeof(str), stdin) != NULL)

读取 str 中的字符串后,我使用 strtok() 将字符串转换为标记,然后使用 atoi() 函数将这些值转换为整数。

token = strtok(str, s);
while( token != NULL) //If token is NULL then don't convert it to integer
int d = atoi(token);

第一个输入的输出符合预期。

输入-1:

5 1 0 3 4\n

输出-1:

d=5
d=1
d=0
d=3
d=4

现在,当我在字符串后输入一个空格并按回车键时,问题就出现了。

输入 2:

5 1 0 3 4 \n

输出 2:

d=5
d=1
d=0
d=3
d=4
d=0

所以现在我的问题是:

1. strtok() 末尾只有空格时会不会返回NULL?

2.如何区分输出中的两个零?

3. 如何避免 strtok() 读取最后的空格或末尾的任意数量的空格?

最佳答案

您使用的函数不正确。作为第二个参数传递的分隔符应该是正确的。

token = strtok(str," \n\t");  //should use delimiter
while( token != NULL)
{
int d = atoi(token);
printf("%d\n",d);
token = strtok(NULL," \n\t");
}

关于c - strtok() 读取字符串末尾的空格并且不返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27937148/

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