gpt4 book ai didi

c - 如何为 %20s 的 scanf 删除额外输入

转载 作者:太空宇宙 更新时间:2023-11-04 06:52:30 25 4
gpt4 key购买 nike

我正在做 c 类介绍的作业,所以我的知识仍然很少,请不要客气。我有

scanf(" %20s", contact.name");
printf("Do you want to enter a middle name?");
scanf(" %c", doYouWant");

如果第一个 scanf 超过 20 个字符,这些字符将作为下一个 scanf 的输入。如果我使用 %s 那么它将接受整行但会比分配的内存长。

我需要获取第一个输入并将其存储在我的结构中,然后再问下一个问题。如何正确避免将 21+ 个字符用作下一个问题的输入,同时将其限制为 20 个字符。

最佳答案

如果您想丢弃未被 scanf 消耗的额外输入,一种方法是使用循环读取并丢弃额外输入,如下所示:

scanf(" %20s", contact.name);
int c;
while((c = getchar()) != '\n' && c != EOF) // <=== This loop read the extra input characters and discard them
/* discard the character */;
printf("Do you want to enter a middle name?");
.....
.....

循环体是空的;我们对正在读取的字符不做任何处理,因此将它们丢弃。

关于c - 如何为 %20s 的 scanf 删除额外输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49264769/

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