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

发布者:Blissful444最新更新时间:2015-08-07 来源: dzsc关键字:getchar  数据类型 手机看文章 扫描二维码
随时随地手机看文章
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.
char s[] = {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  数据类型 引用地址:getchar()使用时遇到的数据类型错误

上一篇:getchar()使用时出现跳跃取字的问题
下一篇:getchar()和EOF总结

推荐阅读最新更新时间:2024-03-16 14:27

stm32 数据类型的定义
在Keil MDK 开发环境里,比如一个 无符号32位整形数据会有很多种表示方法:1,unsigned int 32 (C语言标准表达方法) 2,uint32_t ; 3 ,u32; 这三种方式都是在表达同一个意思,可为什么ST的开发人员要搞的这么乱呢? 还有其他好多你可能看起来很陌生 ,很不好理解的表达方式,如:_IO int32_t 他等同于vs32(这个你同样很陌生),不过他还等同于 volatile int32_t, 还等同于 volatile signed int 32;最后这种表达方式才是C语言的标准表达方式,够乱吧,能把初学者弄的晕头转向。 其实ST 搞这么多花样,无非是想开发人员在写代码时定义数据类型能少写几个符
[单片机]
PIC8位在PICC中的数据类型
PIC8位MCU的内存都是8位字节结构的,所以PICC中对于数据的划分都是以8位为基础的。 在汇编中,我们对一个地址为0X20的内存附值: movlw 255; movwf 0x20; 但一个内存是8位结构,能表示最大的数是255。要是超过了会怎么样呢? movlw 256; movwf 0x20; 通过DEBUG后,可以看出0X20中的值不是256,而是0了。 这里可以看出PIC处理器计算过程是当计算结果超过内存能容纳的最大数(也就是所谓溢出),则自动抛弃最高位。 如下: 255 - 256 11111111-100000000 256的2进制有9位,于是PIC处理器就自动抛弃最高位1,剩下的8个
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved