我如何扫描少于定义到数组中的字符?

问题描述 投票:0回答:1

我尝试将字符扫描到数组时遇到问题。

这是扫描循环-

 char letter[6]={0};
for(int i=0;i<=5;i++)
    {
        scanf(" %c",&letter[i]);
    }

期望的结果是,如果输入小于6,则每个元素从scanf接收值,同时保持0。

但是,如果我尝试输入例如3个字符,我将无法继续执行程序。

另一方面,当我尝试从txt文件输入3个字符时,程序可以正常工作,所需的结果。

我想知道解决此问题的正确方法是什么。

谢谢大家。

c arrays input scanf
1个回答
0
投票

由于格式上的空格,代码无法检测到'\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++) {
© www.soinside.com 2019 - 2024. All rights reserved.