菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
396
0

Linux文件读写笔记

原创
05/13 14:22
阅读数 9282

读文件:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> //linux下面的头文件
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
int main(int avg, char* avgs[])
{
	if (avg < 2)
	{
		printf("参数错误\n");
		return EXIT_FAILURE;
	}
	char s[] = "abc.txt";
	int fd = open(avgs[1], O_RDONLY);
	if (fd == -1)
	{
		printf("error :%s\n", strerror(errno));
	}
	else
	{
		printf("fd=%d\n", fd);
		char buf[100];
		memset(buf, 0, sizeof(buf));
		//循环读取文件
		while (read(fd, buf, sizeof(buf)-1)>0)
		{
			printf("buf:%s\n", buf);
			memset(buf, 0, sizeof(buf));
		}
		close(fd);
	}
	return 0;
}

  

写文件:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> //linux下面的头文件
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
int main(int avg, char* avgs[])
{
	if (avg < 2)
	{
		printf("参数错误\n");
		return EXIT_FAILURE;
	}
	int fd = open(avgs[1], O_RDWR | O_APPEND);
	if (fd==-1)
	{
		printf("file open error : %s \n", strerror(errno));
		return EXIT_FAILURE;
	}
	else
	{
		printf("fd= %d\n", fd);
		char buf[100];
		memset(buf, 0, sizeof(buf));
		strcpy(buf, "RtesttesttestR");
		int i = write(fd, buf, strlen(buf));
		close(fd);
	}
	return 0;
}

  

 获取文件详细信息:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> //linux下面的头文件
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
int main(int avg, char* avgs[])
{
	if (avg < 2)
	{
		printf("参数错误\n");
		return EXIT_FAILURE;
	}
	int fd = open(avgs[1], O_RDWR | O_APPEND);
	if (fd==-1)
	{
		printf("file open error : %s \n", strerror(errno));
		return EXIT_FAILURE;
	}
	else
	{
		struct stat buf;
		//获取文件信息
		fstat(fd, &buf);
		//判断文件是否为标准文件
		if (S_ISREG(buf.st_mode))
		{
			printf("%s is a char file \n", avgs[1]);
		}
		//判断文件是否为目录
		if (S_ISDIR(buf.st_mode))
		{
			printf("%s is a directory \n", avgs[1]);
		}
		//打印文件的大小
		printf("%s file size is %d\n",avgs[1], buf.st_size);
	}
	return 0;
}

  

 c语言读文件

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int avg, char* avgs[])
{
	if (avg < 2)
	{
		printf("avg error\n");
		return EXIT_FAILURE;
	}
	FILE* fp = fopen(avgs[1], "r");
	if (fp == NULL)
	{
		printf("file open error");
		return EXIT_FAILURE;
	}
	char buf[10];
	memset(buf, 0, sizeof(buf));
	

	size_t rc = 0;
	while (1)
	{
		//fr返回读了几条记录数(fread第三个参数表示读多少条记录)
		size_t fr = fread(buf, 1, 10, fp);
		rc += fr;
		if (fr == 0)
		{
			break;
		}
		printf("%s \n", buf);
		memset(buf, 0, sizeof(buf));
	}
	printf("size:%d\n", rc);
	return EXIT_SUCCESS;
}

 

c语言写文件

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//写文件
int main(int avg, char* avgs[])
{
	if (avg < 2)
	{
		printf("avg error !\n");
		return EXIT_FAILURE;
	}
	FILE* fp = fopen(avgs[1], "a+");
	if (fp == NULL)
	{
		printf("file open error!\n");
		return EXIT_FAILURE;
	}
	else
	{
		char buf[100];
		memset(buf, 0, sizeof(buf));
		strcpy(buf, "hello world\n");
		fwrite(buf, strlen(buf), 1, fp);
		fclose(fp);
	}
	getchar();
}

  

 二进制文件的读和写操作

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
typedef struct _Person {
	char name[20];
	int age;
}Person;
//二进制文件读操作
int main(int avg, char* avgs[])
{
	if (avg < 2)
	{
		printf("avg count error!\n");
		return EXIT_SUCCESS;
	}
	FILE* fp = fopen(avgs[1], "r");
	if (printf == NULL)
	{
		printf("file open error %s\n", strerror(errno));
	}
	else
	{
		Person parray[10];
		memset(&parray, 0, sizeof(Person));
		while (fread(&parray[0],sizeof(Person),1,fp))
		{
			printf("age:%d,name:%s\n", parray[0].age, parray[0].name);
		}
		fclose(fp);
	}
	return EXIT_SUCCESS;
}
//二进制文件写操作
int main(int avg, char* avgs[])
{
	if (avg<2)
	{
		printf("avg count error!\n");
		return EXIT_SUCCESS;
	}
	FILE* fp = fopen(avgs[1], "w");
	if (printf==NULL)
	{
		printf("file open error %s\n", strerror(errno));
	}
	else
	{
		Person parray[10];
		parray[0].age = 0;
		strcpy(parray[0].name, "caoruipeng");
		parray[1].age = 1;
		strcpy(parray[1].name, "jiaruixin");

		fwrite(&parray, sizeof(Person), 2, fp);
		fclose(fp);
	}
	return EXIT_SUCCESS;
}

  

文件目录读写

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h>
#include <dirent.h>
int main(int arg, char* args[])
{
	DIR* dp;
	struct dirent* dirp;
	dp = opendir(args[1]);
	if (dp == NULL)
	{
		printf("open dir error %s\n", strerror(errno));
		return 0;
	}
	while ((dirp = readdir(dp)) != NULL)
	{
		printf("name:%s\n", dirp->d_name);
	}
	closedir(dp);
}

  

 

发表评论

0/200
396 点赞
0 评论
收藏