1. 不等号的优先级高于等号
若把 while ( (c = getchar ()) != EOF )
写成 while ( c = getchar () != EOF ),就相当于是这条语句:
while ( c = (getchar () != EOF) ) 意义完全不同
2. long 类型需要在使用printf函数时用%ld来说明。
3. getchar ()函数会把 换行 字符也读入缓存
#include <stdio.h>
main ()
{
long nc = 0;
while ( (c = getchar ()) !=EOF )
nc++;
printf ("There's %ld characters.\n",nc);
}
如果你输入了a,b,c三个字符,上面这段代码会输出一共输入了6个字符,原因就是每一次输入的换行符也被读入了
可以修改一下,把换行符去掉(getchar存储的是字符的ascii码,而换行符的ascii码为10,制表符是9,空格是32):
#include <stdio.h>
main ()
{
long nc = 0;
int c;
while ( (c = getchar ()) !=EOF )
{
printf ("c is %d\n",c);
if (c != 10) /* or use: if ( c != '\n' ) */
nc++;
}
printf ("There's %ld characters.\n",nc);
}
另外,可以直接用scanf ()函数,scanf ()函数本身就不会读取末尾的换行。
4、gcc编译时报错误:`true' undeclared (first use in this function)
在编译C语言时有时会遇到这样的错误提示:
`true' undeclared (first use in this function) or `false' undeclared (first use in this function)
就是说 bool, true, false 都是undeclared,原因很简单,因为真正的C中没有这些关键字,c和早期的c++里没有关键字bool,使用BOOL可以,但BOOL不是内置类型了,都是通过typedef或者宏来定义的,通常都会被定义成int类型。后来的c++出现了内置类型bool,值只能为true(1)和false(0)。
解决方法:
1、将文件名.c改为文件名.cpp,用C++方式编译则没问题
2、自己进行一个宏定义:
typedef enum __bool { false = 0, true = 1, } bool;
c90是没有bool的,因此支持c90的dev-c++当然也没有。想在c90里用bool,可以自行用宏进行定义。
c99支持bool,用支持c99的编译器例如gcc就可以的。
参考:http://blog.sina.com.cn/s/blog_6a6094d501011g2h.html
分享到:
相关推荐
《51单片机C语言程序设计教程》是由王云编著的一本针对初学者的教程,涵盖了51单片机的基础知识以及如何使用C语言进行编程。这本教程不仅包含理论讲解,还提供了丰富的实践案例,以帮助学习者更好地理解和掌握51...
在IT领域,编程语言是构建各种软件的基础,而C语言作为一种经典的系统级编程语言,被广泛用于操作系统、设备驱动程序以及各种实用工具的开发。在这个特定的案例中,"C语言写的定时关机工具"是一个利用C语言编写的...
在程序设计上,此软件很可能包含以下组件: 1. 用户界面:用于输入定时时间和选择操作(关机、重启、注销)的部分。 2. 时间处理模块:负责计算并监控时间,触发定时事件。 3. 操作执行模块:根据用户选择的操作,...
AVR学习笔记3聚焦于定时计数器0的实验,是为初学者提供的一份宝贵资源,旨在深入理解AVR单片机的工作原理及其应用。在这个实验中,我们将探讨以下几个核心知识点: 1. **AVR单片机架构**:AVR系列微控制器是由Atmel...
本项目是一个使用C#语言编写的程序,目的是实现从MySQL数据库到SQL Server数据库的数据定时传输。下面我们将深入探讨这个项目涉及的关键知识点。 1. C#编程语言:C#是Microsoft开发的一种面向对象的编程语言,广泛...
### 超声波测距C语言程序:深入解析与技术要点 #### 一、超声波测距原理概述 超声波测距是利用超声波在空气中的传播速度来测量距离的一种方法。基本原理是通过发射超声波脉冲,然后检测回波信号的时间差,再结合...
了解指令集,能够编写汇编语言或C语言程序。 2. **电源管理**:智能定时插座需要有稳定的电源供应,可能需要考虑低功耗设计,以及如何处理电源波动对单片机的影响。 3. **外围接口电路**:设计中会包含继电器或...
AVR学习笔记三聚焦于定时计数器0的实验,这是深入理解AVR微控制器定时器功能的关键。AVR系列微控制器是由Atmel(现已被Microchip Technology收购)开发的一系列高级精简指令集(RISC)单片机,广泛应用于嵌入式系统...
在C语言程序中,我们通常通过 extern "C" 声明来确保C++编译器不会对函数进行名字修饰,以便于C语言调用。 在叫号系统的设计中,有几个关键组成部分: 1. **数据结构**:首先,我们需要定义数据结构来存储和管理...
最后,文件“使用51单片机实现智能定时插座原理图源程序设计资料”应包含电路原理图、源代码、编译配置、使用说明等相关文档,帮助读者理解和实现这个项目。通过深入学习和实践,读者不仅可以掌握51单片机的使用,还...
- **内嵌函数**:支持使用`call`命令来调用其他批处理文件或脚本中的功能块,类似于程序设计语言中的函数调用。 - **错误处理**:可以使用`if errorlevel`来检查命令执行后的返回值,并据此作出不同的响应。 #### 2...
本项目“C语言电子时钟程序”则是一个以C++语言实现的实例,旨在帮助学生进行毕业设计,程序员进行开发研究,以及小公司作为项目参考技术。下面我们将详细探讨该项目的核心知识点。 1. **时间获取与处理** C++语言...
6. **源代码管理**:文件"main.asm"和"main.c"分别是汇编语言和C语言的源代码文件,开发者在这两个文件中实现了定时闹钟的逻辑。源代码的组织和注释对于理解和维护项目至关重要。 通过这个项目,学习者不仅可以掌握...
在本“4AVR学习笔记四、定时记数器1实验”中,我们将深入探讨AVR单片机中的定时计数器功能,这是进行延时、脉冲处理、频率测量等关键操作的核心组件。 首先,定时器是AVR单片机内部硬件模块,用于周期性地产生中断...
这个特定的程序设计用于每天在22:20自动关闭计算机,并在21:50时提醒用户即将关机。以下是这个项目涉及到的一些关键知识点和实现细节: 1. **C# 基础**: - C#是一种面向对象的编程语言,由微软公司开发,广泛应用...
在本文中,我们将深入探讨如何使用C语言进行单片机编程,特别是针对8051单片机设计花样流水灯程序,并结合Proteus仿真工具进行验证。8051单片机是一种广泛应用的微控制器,它具有丰富的内置资源和广泛的外围设备支持...
这个程序设计用于实现一个实用的电子钟功能,包括定时、整点报时、闹钟提示以及校时和秒表功能。下面我们将详细探讨这些知识点。 1. **C语言编程**:C语言是一种通用的、面向过程的编程语言,因其高效和灵活性被...
在设计自动删除程序时,需要考虑以下几个方面: - 安全性:确保只有授权的文件才能被删除,避免误删重要文件。 - 错误处理:添加异常处理机制,以防文件不存在或权限不足等情况。 - 日志记录:记录每次删除操作...
【标题】"10秒时间程序"是一款基于51单片机设计的简易计时器,它...通过这个项目,学习者不仅可以掌握51单片机的定时器使用和C语言编程,还能了解到数码管显示控制的基本原理,为后续更复杂的嵌入式系统设计打下基础。