字符类型变量如何在此程序中保存多个字节?

时间:2013-10-20 18:09:14

标签: c getchar putchar

我正在使用带有 gcc 的Ubuntu 12.04 LTS。任何人都可以告诉我,这个字符类型变量如何保存多个字节?注意:此程序将回显您键入的所有字符(多个)。例如,如果您输入“thilip”,那么它将作为“thilip”回显。每个字符保存8位(一个字节),所以我输入了6个字符(6个字节)。然后,getchar函数如何将此值赋给只能保存一个字节的字符类型变量?

#include <stdio.h>
int main(void)
{
    char ch;

    while ((ch = getchar()) != '#')
        putchar(ch);

    return 0;
}

3 个答案:

答案 0 :(得分:2)

它不能。每次调用getchar时,其先前的值都会被新的值覆盖。

答案 1 :(得分:1)

char类型变量是1个字节。您可以通过

进行检查
printf("%zu", sizeof(char));  

如果您想知道提供输入

asdf  

正在打印

asdf  

由于ch持有此asdf,因此您错了。 getchar()一次只能读取一个字符 当您输入多个char时,这组字符将存储在输入缓冲区中。然后,getchar()从此输入缓冲区中逐个读取一个字符,并一次为char变量ch分配一个字符,putchar()逐个打印它。每次迭代后chgetchar()读取的新字符覆盖 您可以通过运行此代码

来检查getchar()一次只能读取一个char
#include <stdio.h>

int main(void)
{
    char ch;
    ch = getchar();
    putchar(ch);

    return 0;
} 

输入:

thilip  

输出:

t  

旁注:

getchar()返回int。您应将ch声明为int

答案 2 :(得分:0)

这是一个字节。是什么让你认为不是?