gpt4 book ai didi

c - 获取输入并拆分为重复的标记

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

所以我有一个简单的函数,它只接受一些输入并在每次运行该函数时打印 hello。

void takeInput(void) {

char *ptrFirst;
char input[50];
scanf("%s", input);
ptrFirst = strtok(input, " ");

printf("hello");
}

int main(int argc, char** argv) {

while(true) {
takeInput();
}

return 0;
}

如果我输入“1 2 3 4”,单词“hello”将被打印四次。我假设该函数会打印一次 hello,然后接受更多输入。为什么会发生这种情况?

最佳答案

If I put the input "1 2 3 4" the word "hello" will be printed four times. I assumed the function would print hello once, then accept more input. Why is this happening?

scanf() 转换说明符 %s 读取非空白字符序列

因此调用 takeInput(),输入 "1 2 3 4"scanf() 处理 1 ,函数返回。

然后再调用三次,处理仍在输入缓冲区中的 234

然后该函数被第五次调用,并等待输入。

在任何时候,输入都不会被 strtok() 标记化,因为 input 从不包含任何空白。

您可能正在寻找fgets( input, 50, stdin )读取整输入。 (检查末尾是否存在 \n,以确保您确实捕获了整个 输入。)

关于c - 获取输入并拆分为重复的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43276836/

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