我尝试将字符扫描到数组时遇到问题。
这是扫描循环-
char letter[6]={0};
for(int i=0;i<=5;i++)
{
scanf(" %c",&letter[i]);
}
期望的结果是,如果输入小于6,则每个元素从scanf接收值,同时保持0。
但是,如果我尝试输入例如3个字符,我将无法继续执行程序。
另一方面,当我尝试从txt文件输入3个字符时,程序可以正常工作,所需的结果。
我想知道解决此问题的正确方法是什么。
谢谢大家。
由于格式上的空格,代码无法检测到'\n'
(Enter)。
" "
中的[scanf(" %c",&letter[i]);
消耗并丢弃所有包含'\n'
的空间,因此代码失去了检测行尾的方法。
而不是检查扫描是否失败(stdin
关闭或罕见的输入错误),或者是否读取了'\n'
,然后中断循环。
for(int i=0; i<=5; i++) {
char ch;
if (scanf("%c", &ch) != 1 || ch == '\n') {
break;
}
letter[i] = (char) ch;
}
为了确保letter[]
是string,将最后一个元素保留为null character。
// for(int i=0; i<=5; i++) {
for(int i=0; i < 5; i++) {