Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何阻止程序将多个字符存储到char变量中?_C_String_Char_Scanf - Fatal编程技术网

如何阻止程序将多个字符存储到char变量中?

如何阻止程序将多个字符存储到char变量中?,c,string,char,scanf,C,String,Char,Scanf,我的程序使用scanf,如下所示: scanf ("%c", &symbol); 如果用户输入字符串>一个字符,是否有方法打印错误?e、 g“abc”当它稍后干扰程序时使用字符串缓冲区fgets(),检查第二个字符是否为\n没有“a”方法执行此操作。有很多。其中之一是查看是否有使用getchar()或类似工具的进一步输入(使用任何无效输入)。或者用%s扫描字符序列,然后选择第一个。有这么多的选择,如果没有更多的上下文,很难判断什么最适合你。这就是为什么你不应该首先使用scanf。缓冲区

我的程序使用scanf,如下所示:

scanf ("%c", &symbol);

如果用户输入字符串>一个字符,是否有方法打印错误?e、 g“abc”当它稍后干扰程序时

使用字符串缓冲区fgets(),检查第二个字符是否为
\n

没有“a”方法执行此操作。有很多。其中之一是查看是否有使用
getchar()
或类似工具的进一步输入(使用任何无效输入)。或者用
%s
扫描字符序列,然后选择第一个。有这么多的选择,如果没有更多的上下文,很难判断什么最适合你。这就是为什么你不应该首先使用
scanf
。缓冲区溢出正在等待发生。@chepner,使用
scanf(3)
将一个字符读入
char
变量不可能导致缓冲区溢出。@vonbrand:让我们玩一个游戏:我用比Python更低级的语言编程有多久了?:)我忘了格式字符串将控制从stdin读取的量。