gpt4 book ai didi

C - 从 scanf 分词

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:50 27 4
gpt4 key购买 nike

我想标记用户输入的任何字符串。我的代码是这样的:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char str;
char *token;

printf("Enter a string: ");
scanf("%s\n", &str);

token = strtok(&str, " ,.-");

while(token != NULL)
{
printf("%s\n", token);

token = strtok(NULL, " ,.-");
}
return 0;
}

但是如果我输入一个像“dogs are brown”这样的字符串,它只会返回“dogs”。我怎样才能让它返回字符串中的每个单词?提前致谢。

最佳答案

你快到了,但是当你写的时候

char str;

你只有空间来存储 1 个字符,strtok 函数将一个字符串作为参数,然后修改该字符串并将其分割成多个部分。

为了做到这一点,您需要为字符串提供空间

char str[64]; 

C 中的字符串是一系列字符后跟一个终止值 0,因此用 64 声明它意味着您可以输入最多 63 个字符的字符串。为了防止用户输入更长的字符串,您可以使用另一个函数(如 fgets)从键盘读取。

fgets( str, sizeof(str), stdin );

然后应用您的 strtok 调用。

关于C - 从 scanf 分词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33294218/

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