大二时学的是C++,当时学的还可以,而且还考了个国家二级C++证书,觉得自己在C++方面已经不错了!后来看了几本书才发现自己学的只是个皮毛,而且后来学习的单片机、嵌入式等,基本上是用C的,而有不同于C++,于是自己就开始学习C语言了。但是记得人们都说C比C++有简单,当时考级时还对自己考了个C++证书有点骄傲。看了C语言之后才发现:这个不是简单,而是很复杂!
看来还是踏实的学吧!
1.4符号常量
把300、20等“幻数”埋在程序中并不是一种好的习惯,这些数几乎没有向以后可能阅读该程序的人提供什么信息,而且使程序的修改变得困难。
#define指令就用于把符号名字(或称为符号常量)定义为一特定的字符串:
#define 名字 替换文本
替换文本可以是任何字符序列,而不仅限于数。
#include <stdio.h>
#define LOWER 0 /*表的下限*/
#define UPPER 300 /*表的上限*/
#define STEP 20 /*步长*/
/*打印华氏-摄氏温度对照表*/
main()
{
int fahr;
for(fahr=LOWER;fahr<=UPPER;fahr=fahr+STEP)
printf("%3d %6.1f/n",fahr,(5.0/9.0)*(fahr-32));
}
符号常量名通常用大学字母拼写,这样就可以很容易与小写字母拼写的变量名相区别。注意:#define指令的末尾没有分号。
1.5字符输入输出
文本流是由一行行字符组成的字符序列,而每一行字符则由0个或多个字符组成,并后跟一个换行符。
最简单的是getchar和putchar
1.5.1 文件复制
最简单的程序是一次一个字符地把输入复制到输出,其基本思想如下:
读一个字符
while(该字符不是文件结束指示符)
输出刚读进的字符
读下一个字符
下面是其C程序:
#include <stdio.h>
/*用于将输入复制到输出的程序:的一个版本*/
main()
{
int c;
c=getchar();
while(c!=EOF)
{
putchar(c);
c=getchar();
}
}
赋值可以作为更大的表达式的一部分出现;
#include <stdio.h>
/*用于经输入复制到输出的程序:第二个版本*/
main()
{
int c;
while((c=getchar())!=EOF)
putchar(c);
}
1.5.2 字符计数
#include <stdio.h>
/*统计输入的字符数:第一个版本*/
main()
{
long nc;
nc=0;
while(getchar()!=EOF)
++nc;
printf("%1d/n",nc);
}
用for循环语句来说明编写的另一种发放:
#include <stdio.h>
/*统计输入的字符数:第二个版本*/
main()
{
double nc;
for(nc=0;getchat()!=EOF;++nc)
;
printf("%.0f/n",nc);
}