getchar()使用时遇到的数据类型错误
在字母读取操作中通常会使用到这条语句
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)
{
}
2.
char
char s[] = {1,4};
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语言历史遗留造成的,虽然不大符合习惯,但已约定俗成
评论