新手问个C语言的简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/11 17:44:39
#include"stdio.h"
main()
{int c;
while((c=getchar())!=EOF)
putchar(c);
}
1.这个程序输入什么才能令程序结束?即文本结束标志是什么。本人觉得这像是个死循环,因为EOF与任何实际字符都不同,那怎样令C==EOF?
2.还有getch()和getchar()具体区别是什么?
3.为什么int型变量也可以存储char型数据?

1,这确实是一个无限循环,输入任何字符都无法终止的,EOF是c语言中,文件处理部分中一个函数fread的返回值
函数名: fread
功 能: 从一个流中读数据
用 法: int fread(void *ptr, int size, int nitems, FILE *stream);
参 数:用于接收数据的地址(字符型指针)(ptr)
单个元素的大小(size)
元素个数(nitems)
提供数据的文件指针(stream)
返回值:成功读取的元素个数 当读取不成功时返回EOF 相当于-1.
而通过函数getchar得到的只是字符型,字符型转换成整形范围只能是0~255 没有负值的,所以此循环是死的
2,关于此问题楼上已经有详细的解答了 我就不用说了。
3,char型在内存中占一个字节(8位)而int型占2个字节(16位),char型变量赋予int型数值时候,由于char型只占一个字节(8位),所以此时,只将int型低8位赋给char. 将char型赋值给int型的时候,由于char 只占一个字节,所以无论char原来为什么字符,得到的int型只在范围0~255内。简单的说,在范围0~255内,二者可以相等。

1、的确是个死循环啊。一般不可以输入EOF的,它只是表示文件的结束。这里没有牵扯到文件,用不到。
2、getch()直接读出字符,getchar()要等待你按回车后才开始读。
3、char型的数据是根据ASCII码存储的,跟int型差不多,当然,int比char范围大得多。

1、ctrl+c
2、函数名: getch
功 能: 从控制台无回显地取一个字符
用 法: int getch(void);
程序例:

#include <stdio.h>
#include <conio.h>

int main(void)
{
char ch;

printf("Inp