如何删除%20s的scanf的额外输入 [英] How to drop extra input for scanf of %20s

查看:29
本文介绍了如何删除%20s的scanf的额外输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在做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()) != '
' && c != EOF)  // <=== This loop read the extra input characters and discard them
    /* discard the character */;
printf("Do you want to enter a middle name?");
.....
.....

循环体为空;我们不处理正在读取的字符,因此将其丢弃。

这篇关于如何删除%20s的scanf的额外输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆