C 在这个程序中,字符类型变量如何保存多个字节?
我将Ubuntu 12.04 LTS与gcc一起使用。有谁能告诉我,这个字符类型变量怎么能包含多个字节?注意:此程序将回显您键入的所有字符(不止一个)。例如,如果您键入“thilip”,那么它将作为“thilip”回音。每个字符包含8位(一个字节),所以我键入了6个字符(6个字节)。那么,getchar函数如何将该值分配给只能保存一个字节的字符类型变量呢C 在这个程序中,字符类型变量如何保存多个字节?,c,getchar,putchar,C,Getchar,Putchar,我将Ubuntu 12.04 LTS与gcc一起使用。有谁能告诉我,这个字符类型变量怎么能包含多个字节?注意:此程序将回显您键入的所有字符(不止一个)。例如,如果您键入“thilip”,那么它将作为“thilip”回音。每个字符包含8位(一个字节),所以我键入了6个字符(6个字节)。那么,getchar函数如何将该值分配给只能保存一个字节的字符类型变量呢 #include <stdio.h> int main(void) { char ch; while ((ch
#include <stdio.h>
int main(void)
{
char ch;
while ((ch = getchar()) != '#')
putchar(ch);
return 0;
}
#包括
内部主(空)
{
char ch;
而((ch=getchar())!='#')
putchar(ch);
返回0;
}
char
类型变量为1字节。你可以通过电话查一下
printf("%zu", sizeof(char));
如果你想知道,在提供输入时
asdf
它正在印刷
asdf
因为ch
持有这个asdf
那么你就错了getchar()
一次只能读取一个字符。当您输入多个
字符时,这组字符将存储在输入缓冲区中。然后,getchar()
从该输入缓冲区逐个读取一个字符,并一次将一个字符分配给char
变量ch
,然后putchar()
逐个打印它。每次迭代后,ch
被getchar()
读取的新字符覆盖
通过运行此代码,可以检查getchar()
一次只读取一个char
#include <stdio.h>
int main(void)
{
char ch;
ch = getchar();
putchar(ch);
return 0;
}
输出:
t
旁注:
getchar()
返回int
。您应该将ch
声明为int
它是一个字节。什么使你认为它不是?它不能。每次调用getchar
,它以前的值都会被新值覆盖 以及它包含多个字节的证明?@thilip您是否想知道ch
是char
类型(一个字节)的getchar
是int
的输出值是如何得到的?在你的代码中有隐式的int->char
cast。Kunal,这个程序将回显你键入的所有字符(不止一个)。例如,如果您键入“thilip”,那么它将作为“thilip”回音。每个字符包含8位(一个字节),因此我键入了6个字符(6个字节)。那么,getchar函数如何将这个值分配给只能保存一个字节的字符类型变量呢?“Linux12.04”该死!您的ch
之所以被称为“变量”,是因为。。。您可以更改它的值,这样随着时间的推移,它可以容纳许多不同的字符,一次一个。像U+2026(即“…”)这样的字符中有两个字节的数据。有些人可以吃得更多。
t