6. 库函数

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);

该函数中尽量不使用可重入函数,避免不可冲入函数(很多库函数就属于该类)。

原文地址:https://www.cnblogs.com/hebust-fengyu/p/12051154.html