如何阻止程序将多个字符存储到char变量中?
我的程序使用scanf,如下所示:如何阻止程序将多个字符存储到char变量中?,c,string,char,scanf,C,String,Char,Scanf,我的程序使用scanf,如下所示: scanf ("%c", &symbol); 如果用户输入字符串>一个字符,是否有方法打印错误?e、 g“abc”当它稍后干扰程序时使用字符串缓冲区fgets(),检查第二个字符是否为\n没有“a”方法执行此操作。有很多。其中之一是查看是否有使用getchar()或类似工具的进一步输入(使用任何无效输入)。或者用%s扫描字符序列,然后选择第一个。有这么多的选择,如果没有更多的上下文,很难判断什么最适合你。这就是为什么你不应该首先使用scanf。缓冲区
scanf ("%c", &symbol);
如果用户输入字符串>一个字符,是否有方法打印错误?e、 g“abc”当它稍后干扰程序时使用字符串缓冲区fgets(),检查第二个字符是否为
\n
没有“a”方法执行此操作。有很多。其中之一是查看是否有使用getchar()
或类似工具的进一步输入(使用任何无效输入)。或者用%s
扫描字符序列,然后选择第一个。有这么多的选择,如果没有更多的上下文,很难判断什么最适合你。这就是为什么你不应该首先使用scanf
。缓冲区溢出正在等待发生。@chepner,使用scanf(3)
将一个字符读入char
变量不可能导致缓冲区溢出。@vonbrand:让我们玩一个游戏:我用比Python更低级的语言编程有多久了?:)我忘了格式字符串将控制从stdin读取的量。