`
rongxh2010
  • 浏览: 48799 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

重拾C的文件操作

阅读更多

#include<stdio.h>
#include<stdlib.h>
#define SIZE 4
#define FILENAME "person"


struct person
{
	int id;
	char name[10];
};


int main()
{

	void copyContent(char inFileName[], char outFileName[]);
	void savePerson(struct person psons[], int size, char fileName[]);
	void readPerson(struct person psons[], int size, char fileName[]);
	
	
	char inFileName[] = "abc.txt";
	char outFileName[] = "abc2.txt";
	copyContent(inFileName, outFileName);
	
	
	int i, size = SIZE;
	char fileName[] = FILENAME;
	struct person psons[4];
	for(i = 0 ; i < size ; i ++ )
	{
		scanf("%d%s", &psons[i].id, psons[i].name)	;
	}
	savePerson(psons, size, fileName);
	
	
	struct person results[4];
	readPerson(results, size, fileName);
	for(i = 0 ; i < size ; i ++)
	{
		printf("%d %s\n", results[i].id, results[i].name);
	}
	

}

//copy file content
void copyContent(char inFileName[], char outFileName[])
{
	FILE *inFile, *outFile;
	char ch;
	if((inFile = fopen(inFileName, "r")) == NULL)
	{
		printf("Cannot open inFile\n");
		exit(0);
	}
	if((outFile = fopen(outFileName, "w")) == NULL)
	{
		printf("Cannot open outFile\n");
		exit(0);
	}
	while( ! feof(inFile))
	{
		ch = fgetc(inFile);
		fputc(ch, outFile);
		putchar(ch);
	}
	fclose(inFile);
	fclose(outFile);
}

//save struct content to file
void savePerson(struct person psons[], int size, char fileName[]) 
{
	FILE* fp;
	int i;
	if((fp = fopen(fileName, "wb")) == NULL)
	{
		printf("Cannot open file\n");
		exit(0);
	}
	for(i = 0 ; i < size ; i ++ ) 
	{
		if(fwrite(&psons[i], sizeof(struct person), 1, fp) != 1)
			printf("file write error.\n");
	}
	fclose(fp);
}

//read struct content from file
void readPerson(struct person psons[], int size, char fileName[])
{
	FILE* fp;
	int i;
	if((fp = fopen(fileName, "rb")) == NULL)
	{
		printf("Cannot open file\n");
		exit(0);
	}
	for(i = 0 ; i < size ; i ++ )
	{
		if(fread(&psons[i], sizeof(struct person), 1, fp) != 1)
			printf("Cannot open file\n");
	}
	fclose(fp);
}
 
分享到:
评论

相关推荐

    alsa_test 拾音代码

    **alsa_test拾音代码**是基于ALSA(Advanced Linux Sound Architecture) API开发的一个音频输入测试程序,主要用于在Android系统环境中验证麦克风等音频输入设备的功能。ALSA是Linux内核的一部分,提供了一套完整的...

    MAPGIS地质制图工具

    1、 首先用Section打开工程文件,把所有文件设为编辑状态,然后对地形等高线文件进行高程赋值——新建线属性高程字段(原MapGis需要这样做,用Section剖面图菜单下的自动赋高程不需新建此字段(拖动操作))。...

    svn-1.4.3-setup.exe.7z

    请注意,检查每一条路径是一件消耗极大的操作,特别是修订版本日志,服务器会检查在每一个修订版本的每一条路径是否可读,对于影响很多文件的修订将会花费很多时间。 认证和授权是不同的处理过程,如果用户希望...

    US1A THRU US1M SMAF YONGYUTAI.pdf

    此外,整流器的快速恢复时间意味着在AC电转换为DC电时可以快速地从正向状态切换到反向状态,这在高频操作时尤其重要,可以减少功率损耗并提高整体电路效率。 在选择适合的整流二极管时,必须考虑其额定的反向电压、...

    java面试宝典

    220、文件和目录(I/O)操作 54 230、J2EE的优越性 54 231、Java语言的11个关键特性. 54 232、说出Servlet的生命周期,并说出Servlet和CGI的区别。 55 233、说出在JSP页面里是怎么分页的? 55 234、存储过程和函数的...

    CPP_Algorithms:我自己编写的各种算法,以使我重新熟悉C ++

    在“CPP_Algorithms”项目中,作者通过编写各种算法来重拾C++编程技能。这个项目的核心目标是加深对C++语言的理解,并强化算法实现能力。C++是一种强大的、通用的编程语言,以其高效性、面向对象的特性以及对底层...

    VVX1500招标参数_IT项目管理运维服务体系构建方案运维规范范文模板、毕业设计.doc

    6. **呼叫处理**:支持触摸式快速拨号、重拨、呼叫转移、保持、转接和拾起等功能,本地支持3方会议,以及呼叫等待、未接电话通知等。 7. **安全性**:设备支持TLS传输层安全、配置文件加密、摘要鉴权以及HTTPS安全...

    最新Java面试宝典pdf版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    Java面试宝典-经典

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    Java面试宝典2012版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到...

    java面试宝典2012

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 67 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

Global site tag (gtag.js) - Google Analytics