1. getchar函数
getchar的原型为
int getchar();
在用的时候应该要注意返回的类型为int,防止发生字符被截断。
2.更新顺序
在对文件操作(读写交替进行)的时候一定要注意下面的情况
#include<stdio.h> int main(){ FILE *f; char buf[BUFSIZ]; f = open("file.name", "a"); while(fread(buf, sizeof(char), BUFSIZ, f)){ fseek(f, -(long long) sizeof(char), SEEK_CUR); fwrite(buf, sizeof(char), BUFSIZ, f); fseek(f, 0, SEEK_CUR); } return 0; }
在我们看来有的时候第二个fseek没必要存在,但是这两个都是一定要存在的,不然会发生错误,根据书中介绍,第二个fseek是起到更新文件状态的作用。
3.缓冲区与输出分配
有的时候我们需要程序即时输出,我们可以采用如下方法
1.在对文件进行操作时可以使用fflush进行即时写入文件
2. 在对标准输出进行即时显示是我们可以使用setbuf(stdout, (char*)0),的形式,我们也可以更改第二个参数进行更改缓冲区如:
char buf[BUFSIZE]; setbuf(stdout, buf);
来进行更改输出到标准输出的缓冲区大小。
4. 使用error检测错误
if(expression() == error_value) //某个操作返回操作不正确的数值 if(error){ //检查error }
5. 库函数signal
该函数在signal.h的头文件中,该函数原型为
void (*signal(int sig, void (*handle)(int))(int);
该函数中尽量不使用可重入函数,避免不可冲入函数(很多库函数就属于该类)。