Unix环境下的编程,所涉及的主要c语言知识

来源:互联网 发布:小米网络全球 编辑:程序博客网 时间:2024/05/18 02:12

宏定义

在一个语句中引用另外一个语句中已经定义的符号,是完全合法的。

#define PI 3.141592675#define TWO_PI 2.0*PI

注意:如果宏定义语句需要跨两行,那么我们必须在第一行的结尾处放置一个反斜线\

带有参数的宏定义语句

#define IS_LEAP_YEAR(y) y%4==0&&y%100!=0|y%400==0
W:c语言的预处理器仅仅进行文本替换
W:定义带有参数的符号时,符号名称和参数列表的左括号之间不允许有空格。

W:与函数不同的是,我们不需要声明参数y的类型。

接受可变参数个数的宏

#define debugPrintf(...) printf("Debug:""__VA_ARGS__");
#参数

#define str(x) #x
str(testing)
"testing"
w:如果在宏定义的参数前面放置一个#,那么c语言的预处理器将使用该参数生成一个常数字符串。

w:如果参数内部本身还包含双引号或者反斜线,这些特殊符号在宏展开的过程中都将保留

##操作符

#define printx(n) printf("%i\n",x##n)
printx(20)
printf("%i\n",x20);
w:宏定义中使用这个操作符可以将两个符号连接起来,操作符前面或者后面可以是宏的参数,创建一个新的符号。

#include语句

头文件或者包含文件里面集中了很多程序中都需要使用的宏定义,可以用#include语句,将其包含到程序中。

<>尖括号让c语言预处理器到某些特定的系统目录寻找该文件。

系统头文件

c语言系统本身就提供了很多的标准头文件



IO重定向

reverse>data
将reverse程序的输出写入到data文件里面

reverse<num
将reverse的输入定向到num文件

reverse<num>data
将文件num输入到reverse程序中,处理后输入到data文件

文件结束标志

在c语言中,我们读完了文件中的数据,系统将设置一个文件结束标志。这个特殊的值用符号EOF代表,该符号在系统头文件<stdio.h>中定义。

fopen函数

fopen函数接受两个参数,第一个参数是字符串类型,用于表示将要打开文件的文件名,第二个参数还是字符串,用于表示用何种模式打开文件。

如果打开失败,该函数返回NULL,NULL在系统头文件<stdio.h>中定义,该文件还定义了一个结构类型FILE,我们必须使用一个指向该类型的指针变量来存储fopen函数的返回值。

FILE*inputFile;
inputFile=fopen("data","r");
有三种模式,‘w’写模式,‘r’读模式,‘a’追加模式。

getc函数和putc函数

getc函数与getchar函数相同,读入一个字符,但是可以接受一个FILE类型的指针参数,表示从哪个文件读取数据。

putc函数与putchar相同,但是要接受两个参数,1,需要输出的字符,第二,FILE指针。

fcolse函数接收一个参数,即需要关闭文件的FILE指针。

fgets函数和fputs函数

如果需要从文件中读取整行数据,我们可以使用c语言提供的fgets和fputs函数。

fgets(buffer,n,filePtr)
其中,buffer是一个字符数组,用于保存读入的字符,n代表buffer最大能够容纳的字符个数,filePtr是需要从中读取数据的文件指针。
fputs(buffer,filePtr);
fputs函数将buffer中的字符输出到filePtr对应的文件中,一直到遇到buffer中的空字符为止。
标准输入stdin,标准输出stdout和标准错误stderr
当一个c语言程序运行的时候,系统将会自动为这个程序打开三个文件,分别用文件指针常量stdin,stdout和stderr代表,在stdio.h中定义,文件stdin代表程序的标准输入,和当前程序的终端窗口联系,stdout对应于标准输出,stderr对应于标准错误,同样和运行程序的终端窗口联系。
(因为程序输出重定向到其它文件,错误仍然可以在终端窗口显示出来。)
exit函数
在某些情况下,发现了程序执行中的某个错误时,可能希望强制结束程序的运行,。从任何位置强制结束程序的运行,exit(n)
n是程序的退出状态码。
命令行参数
当运行时刻环境调用我们的main函数时,实际上有两个参数被传递给了main函数,
1.整形数,argc(argument count),用于代表命令行上用户输入的参数个数。
2.一个字符指针数组,argv(argument vector),在该字符指针数组中包含有argc+1个元素
(通常情况下,该数组中的第一个字符指针指向当前运行程序的名字,如果操作系统没有提供,那么该字符指针指向空字符NULL)该字符数组的最后一个元素,就是argv[argc],其值总是NULL。
w:命令行参数总是被作为字符串来存储的









0 0
原创粉丝点击