字符数组读取 3 个输入而不是 c 中的 5 个输入?

标签 c arrays getchar putchar

我的代码如下

#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 个字符并将它们转换为大写。

最佳答案

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

关于字符数组读取 3 个输入而不是 c 中的 5 个输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38128280/

相关文章:

java - 将 SortedMap 的值转换为 arrayList

php - 在具有 2 列的表中显示数组

c - 为什么 getchar() 函数不循环?

c - 需要逐步说明“while(((c = getchar())!='\n'&& c!= EOF;”)

c - 如何向/从其他处理器发送/接收结构数组?

c - 如何在字符串数组中为某个新字符串动态分配内存并将该字符串复制到 C 中动态分配的空间中?

c - ASCII 字符串和字节顺序

javascript - 根据用户输入 javascript 返回过滤后的数组

c代码文本不显示

c - getchar() 和 putchar() 函数背后的理论