fread实现函数
fgetc函数
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
//打开文件
FILE * fp=fopen("./1.txt", "r");
if(NULL == fp){
perror("获取文件失败");
return -1;
}
//读取文件
//创建一个缓冲区
char * buf = calloc(1,1);
if (buf == NULL) {
perror("内存分配失败");
fclose(fp);
return -1;
}
size_t ret = fread(buf, 1, 1 , fp);
printf("%c\n",buf[0]);
free(buf);
fclose(fp);
return 0;
}
![](https://i-blog.csdnimg.cn/direct/3ccbd624f26d4a54a0fd4d1352ac3851.png)
fgets函数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
if(argc!=2){
printf("请输入需要长度的参数");
return 0;
}
//打开文件
FILE * fp=fopen("./1.txt", "r");
if(NULL == fp){
perror("获取文件失败");
return -1;
}
// 使用 strtol 转换字符串为长整型
char *endptr;
//读取文件
//创建一个缓冲区
char * buf = calloc(20,50);
if (buf == NULL) {
perror("内存分配失败");
fclose(fp);
return -1;
}
while(1)
{
memset(buf,0,100);
size_t ret = fread(buf, 20, 5, fp);
//读取到的块数
for(int i=0;i<strtol(argv[1], &endptr, 10);i++){
if(buf[i]=='\n')break;
else printf("%c",buf[i]);
}
if(ret == 0)
{
break;
}
}
putchar(10);
free(buf);
fclose(fp);
return 0;
}
![](https://i-blog.csdnimg.cn/direct/672d174b1434470c91737db5f49344dc.png)
fwrite实现函数
fputc函数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
if(argc!=3){
printf("请输入内容 文件地址");
return 0;
}
//打开文件
FILE * fp=fopen(argv[2], "w");
if(NULL == fp){
perror("获取文件失败");
return -1;
}
char *buf =argv[1];
fwrite(buf,1,1,fp);
putchar(10);
fclose(fp);
return 0;
}
![](https://i-blog.csdnimg.cn/direct/b1b9c2a1e70a4e5f92f24180aad28926.png)
fputs函数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
if(argc!=3){
printf("请输入内容 文件地址");
return 0;
}
//打开文件
FILE * fp=fopen(argv[2], "w");
if(NULL == fp){
perror("获取文件失败");
return -1;
}
char *buf =argv[1];
fwrite(buf,strlen(buf),1,fp);
fclose(fp);
return 0;
}
![](https://i-blog.csdnimg.cn/direct/6873232e26b64f4e94f1a2e809e0c8e3.png)