scanf("%s",&a)是不正确的,因为你读取的是一个单字符。
scanf("%d",&a);
试试其中的一个:或者
scanf("%c",&a);
首先是: printf
和 scanf
包括从 <cstdio>
在C++中。的 <stdio.h>
头在C语言中使用。
其次,你可以看到 scanf
返回一个值--你应该总是检查这个。如果发生错误(或者转换失败),那么想要调试忽略它的结果,比一开始就检查要困难得多。
第三,你可以看到转换指定器中的 %s
除了匹配的字符外,总是存储一个空字符(所以参数数组必须有至少宽度+1字符的空间)。
因为它读的是 绳子 的字符。你已经传递了一个字符的地址,这意味着你几乎肯定会在它的外面写,并看到未定义的行为。使用 %s
没有宽度指定符总是很危险的(即,不要这样做)。
你可以使用 %c
来读取单个字符,或者你可以读取一个字符串(进入一个实际的字符数组),然后检查长度和内容,或者你可以使用C++流,让你的生活变得更简单。