`
rongxh2010
  • 浏览: 48236 次
  • 性别: 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);
}
 
分享到:
评论

相关推荐

    MAPGIS地质制图工具

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

    svn-1.4.3-setup.exe.7z

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

    千方百计笔试题大全

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

    java面试宝典

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

    最新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面试宝典2010版

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

    Java面试宝典-经典

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

    JAVA面试宝典2010

    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文件复制到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...

    Java面试宝典2012新版

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

    Java 面试宝典

    37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; .................. 25 38、try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不 会被执行,什么时候被执行,在 ...

Global site tag (gtag.js) - Google Analytics