gpt4 book ai didi

c - 使用 scanf 函数输入两个字符串

转载 作者:行者123 更新时间:2023-11-30 14:53:47 26 4
gpt4 key购买 nike

如何在C中使用scanf输入两个字符串?,我想按如下方式使用它们:

#include <stdio.h>
#include <string.h>
main()
{
char kid[25];
char color[10];
scanf( "%24[^\n]", kid); // kid name
scanf( "%9[^\n]", color);
printf("%s\'s favorite color is %s.\n", kid, color);
return 0;
}

最佳答案

您正在使用第一个 scanf() 将输入读取到 kid 中,直到 \n 为止。但是 scanf() 不会读取 \n 并且它将保留在输入缓冲区中。

当下一个 scanf() 完成时,它看到的第一个字符是 \n,在将任何内容写入 color< 之前,它会停止读取该字符。/.

你可以做

scanf("%24[^\n] ", kid);
scanf("%9[^\n]", color);

[^\n] 后面的空格将读取一个空白字符,例如 \n

如果 %*c 的用法如下

scanf("%24[^\n]%*c", kid);
scanf() 中的

%*c 将导致读取字符,但不会将其分配到任何地方。 * 是赋值抑制字符。请参阅here .

但是,如果在 \n 之前输入正好 25 个字符,则 %*c 将仅读取离开 \n 的最后一个字符code> 仍在输入缓冲区中。

如果您可以使用 scanf() 以外的函数,fgets() 就可以了。

fgets(kid, sizeof(kid), stdin);

但请记住,fgets() 也会将 \n 读取到 kid 中。你可以像这样删除它

kid[strlen(kid)-1]='\0';

由于读取此 \n,读取的字符数实际上会减少 1。

关于c - 使用 scanf 函数输入两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47019615/

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