新闻中心

EEPW首页>嵌入式系统>设计应用> getchar()使用时遇到的数据类型错误

getchar()使用时遇到的数据类型错误

作者: 时间:2016-11-28 来源:网络 收藏
1.
在字母读取操作中通常会使用到这条语句
while ((c =getchar() ) != EOF)
在做练习时,没有注意括号的重要性,写成
while (c = getchar() != EOF)
结果使得putchar(c)是乱码。
分析:
返回的bool值虽然也是1没错,但是c取得的值却是乱码。鉴于语句里面只有两个判断符号
猜测是符号优先级导致了乱码?
推测c被赋予的值是int 1。但是作为char输出时,是乱码。不应该当会当作ACSII码来处理吗?

还有就是没有理解一次性调用的基本原理,就是设定一个进入条件,执行时改变他:
if ((c == ) || (c == t) )
if (flag == 0)
{
...
flag = 1;
}
2.
chars[] = {123,456};//编译错误!
char s[] = {1,4};//通过编译,输出s内容是乱码!!
char 数组不能那样存?
但是使用 c = getchar(); 之后,即是c存的是数字,但是也是char类型。
可以有 s [i] = c; ,同时输出也是正确值(键盘输入123,s元素也是123);

执行时产生了Segmentation fault (core dumped)错误,由于数组操作为主,初定是数组越界导致。
没错就是数组越界造成的!对于数组s[10],实际范围是s[0]~s[9]!千万别往s[10]里面存东西,我就存了#!#!#!#!还好只是存了结束符,不影响表面显示效果。从0开始计数的原则是C语言历史遗留造成的,虽然不大符合习惯,但已约定俗成


关键词:getchar数据类

评论


技术专区

关闭