我正在做 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?");
.....
.....
循环体是空的;我们对正在读取的字符不做任何处理,因此将它们丢弃。
我是一名优秀的程序员,十分优秀!