欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

标准IO库介绍与简单使用

程序员文章站 2024-01-23 18:29:58
...

1.标准IO和文件IO有什么区别
(1)看起来都是函数,但是标准IO是C库函数,而文件IO是linux下的API。
(2)C语言库函数是由API封装而来的。库函数内部也是通过调用API来完成操作的,但是库函数因为多了一层封装,所以比API要更加好用一些。
(3)库函数比API还有一个优势就是:API在不同的操作系统之间是不能通用的,但是C库函数在不同操作系统中几乎是一样的。所以C库函数具有可移植性而API不具有可移植性。
(4)性能上和易用性上看,C库函数一般要好一些。譬如IO,文件IO是不带缓存的,而标准IO是带缓存的,因此标准IO比文件IO性能要更高。

2.常用标准IO函数介绍
(1)常见的标准IO库函数有:fopen、fclose、fwrite、fread、ffulsh、fseek

3.一个简单的标准IO读写文件实例

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>

#define FILENAME "2.txt"

int main(void)
{
        FILE *fp1 = NULL;
        FILE *fp2 = NULL;
        size_t len1 = -1;
        size_t len2 = -1;
        char readBuf[100] = {0};
        char arr[] = "abcdefghijk";

        fp1 = fopen(FILENAME,"w+");
        if(NULL == fp1)
        {
                perror("fopen");
                _exit(-1);
        }
        printf("fopen success fp1 = %p\n",fp1);

        //len1 = fwrite("abcde",1,5,fp);

        //会将字符串结束标志\0打印进去所以选择strlen比较好
        //len1 = fwrite(arr,sizeof(char),sizeof(arr)/sizeof(arr[0]),fp1);

        len1 = fwrite(arr,sizeof(char),strlen(arr),fp1);
        printf("len = %ld\n",len1);

        //fclose(fp1);

        fseek(fp1,0,SEEK_SET);
        memset(readBuf,0,sizeof(readBuf));
        len2 = fread(readBuf,1,10,fp1);

        printf("len2 = %ld\n",len2);
        printf("readBuf is [%s]\n",readBuf);

        fclose(fp1);
		/*不要fseek就重新打开文件将文件指针定位到开头
        fp2 = fopen(FILENAME,"r+");
        printf("fp2 = %p\n",fp2);
        memset(readBuf,0,sizeof(readBuf));

        len2 = fread(readBuf,1,10,fp2);
        printf("readBuf is [%s]\n",readBuf);

        fclose(fp2);
        */

        return 0;
}