【问题标题】:character array reads 3 inputs instead of 5 in c?字符数组在 c 中读取 3 个输入而不是 5 个输入?
【发布时间】:2016-06-30 16:05:23
【问题描述】:

我的代码如下

#include <stdio.h>
#include <ctype.h>

#define size 5

void main(){

    int i;
    char letter[size];
    for(i=0;i<size;i++)
        letter[i]=getchar();
    for(i=0;i<size;i++)
        putchar(toupper(letter[i]));
}

输出是:

bitto@HP-ProBook-4430s:~$ gcc test.c
bitto@HP-ProBook-4430s:~$ ./a.out
a
s
d
A
S
D

为什么会这样?它是读取 5 个字符并将它们转换为大写。

【问题讨论】:

  • 可怜的被忽视的'\n'...
  • 您需要了解一下终端的行为方式。见this
  • @EOF 肯定是对的。我在回答中扩展了您的评论。

标签: c arrays getchar putchar


【解决方案1】:

正如 EOF 所说,您的任何输入都将采用两个字符作为输入,因为您输入的是 A 然后 Enter 其中C 读取为a\n 所以这是两个字符,而不是一个。

【讨论】:

  • 这解释了它。在同一行输入不带空格的字符即可解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
  • 2018-03-05
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多