标准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;
}
上一篇: 荣耀赵明:智慧屏将成为家庭情感中心 连接每个人和设备
下一篇: 详解iOS中多倒计时场景的解决方案