`

读取file1的内容以行为单位倒置输出到file2中

阅读更多
/*
	功能:读取文件file1.txt的内容比如:
	12
	34
	56
	输出到file2.txt
	56
	34
	12
	备注:本算法只针对这样数据行的文件内容有效。
	日期:2009.12.30
	作者:DC
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

int main(int argc, char **argv)
{
	FILE *fp1,*fp2; //两个文件指针
	int max = 10; //首次分配的int型的空间大小的个数
	int *a; //分配空间首地址赋给a
	int *b; //在realloc的时候,b接过指针,方便赋给a
	
	/*分配空间函数malloc在头文件stdlib.h中*/
	a = (int *)malloc(max * sizeof(int));
	if (a == NULL)
	{
		printf("overflow while malloc\n");
		exit(-1);
	}
	
	/*文件标准IO函数在stdio.h中*/
	fp1 = fopen("file1.txt", "r");
	if (fp1 == NULL)
	{
		printf("open file1 error:%s\n", strerror(errno));
		exit(-1);
	}
	
	fp2 = fopen("file2.txt", "w");
	if (fp2 == NULL)
	{
		printf("open file2 error:%s\n", strerror(errno));
		exit(-1);
	}
	
	/*fscanf对本算法实现相当重要,因为文件中的格式确定,用这个函数很方便*/
	int i=0, j=0;
	while(fscanf(fp1, "%d", &a[i]) != EOF)
	{
		i++;j++;
		if(i >= max) //当空间不够用时,用realloc函数实现
		{
			max = 2 * max;
			b = (int *) realloc(a, max * sizeof(int));
			if (b == NULL)
			{
				printf("overflow while realloc\n");
				exit(-1);
			}
			a = b;
		}
	}
	
	/*注意--j,因为最后一个读出来的是结束符'\0',
	另外注意a[0]也是有效数据。*/
	for (; --j>=0;) 
	{
		fprintf(fp2, "%d\n", a[j]);
	}
	
	fclose(fp1);
	fclose(fp2);

	return 0;
}
0
0
分享到:
评论

相关推荐

    C语言精粹(第2版)随书关盘

    按【F3】键或者“File-&gt;Open”菜单命令,打开1.c文件, 按【Ctrl+F9】键,或者“Run-&gt;Run”菜单命令,编译运行该程序。 ◎ 光盘目录清单如下: 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 ...

    C语言源代码格式化 完工 小文版本 V1.10 20120831 0955.zip

    功能:在指定目录下生成256个文件夹,每个文件夹内生成256个32K的文本文件,内容为“A”。 FileGenerate 20111121 1641.7z 功能: 猜想:对于“8.3格式文件”的文件名,(也许是出于向后兼容的目的),操作系统...

    C语言源代码格式化 完工 V1.08 20120801 1627.7z

    功能:在指定目录下生成256个文件夹,每个文件夹内生成256个32K的文本文件,内容为“A”。 FileGenerate 20111121 1641.7z 功能: 猜想:对于“8.3格式文件”的文件名,(也许是出于向后兼容的目的),操作系统...

    C语言源代码格式化 完工 V1.09 20120821 2116.7z

    功能:在指定目录下生成256个文件夹,每个文件夹内生成256个32K的文本文件,内容为“A”。 FileGenerate 20111121 1641.7z 功能: 猜想:对于“8.3格式文件”的文件名,(也许是出于向后兼容的目的),操作系统...

    220个C源代码 初学C语言必备

    源代码使用方法是(以实例1为例): 将该实例的源码,比如实例1的1.c文件(可以在001目录下找到), 拷贝到tc编译器目录下,运行tc.exe,打开编译器, 按【F3】键或者“File-&gt;Open”菜单命令,打开1.c文件, 按...

    C语言源代码格式化 完工 V1.04 20120226 1946.7z

    功能:在指定目录下生成256个文件夹,每个文件夹内生成256个32K的文本文件,内容为“A”。 FileGenerate 20111121 1641.7z 功能: 猜想:对于“8.3格式文件”的文件名,(也许是出于向后兼容的目的),操作系统...

    C 语言实例解析精粹(第二版)(书+盘)

    按【F3】键或者“File-&gt;Open”菜单命令,打开1.c文件, 按【Ctrl+F9】键,或者“Run-&gt;Run”菜单命令,编译运行该程序。 ◎ 光盘目录清单如下: 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 ...

    C语言实例解析精粹(第二版) 光盘代码

    按【F3】键或者“File-&gt;Open”菜单命令,打开1.c文件, 按【Ctrl+F9】键,或者“Run-&gt;Run”菜单命令,编译运行该程序。 ◎ 光盘目录清单如下: 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 ...

    C语言源代码格式化 完工 V1.05 20120229 1804.7z

    功能:在指定目录下生成256个文件夹,每个文件夹内生成256个32K的文本文件,内容为“A”。 FileGenerate 20111121 1641.7z 功能: 猜想:对于“8.3格式文件”的文件名,(也许是出于向后兼容的目的),操作系统...

    C语言常用算法

    155 读取DOS系统中的国家信息 156 修改环境变量 157 显示系统文件表 158 显示目录内容 159 读取磁盘文件 160 删除目录树 161 定义文本模式 162 设计立体窗口 163 彩色弹出菜单 164 读取CMOS信息 165 获取...

    C语言实例解析精粹

    155 读取DOS系统中的国家信息 156 修改环境变量 157 显示系统文件表 158 显示目录内容 159 读取磁盘文件 160 删除目录树 161 定义文本模式 162 设计立体窗口 163 彩色弹出菜单 164 读取CMOS信息 165 获取...

    asp.net知识库

    如何在DotNet 2的登录组件中检索用户的锁定状态及解锁? ASP.NET 2.0, 想说爱你不容易 SqlDataSource WEB控件:当DeleteCommandType= 遭遇 ASP.NET 2.0 只读 TextBox 回发后信息丢失的 bug asp.net2.0:扩展...

    C源代码实例集

    ◎ 文件说明 本文件包括以下内容: ※ 1、文件说明 ※ 2、源码操作说明 ※ 3、光盘目录清单 &lt;br&gt; ◎ 源码操作说明 &lt;br&gt; 源代码使用方法是(以实例1为例): 将该实例...

    C语言FAQ 常见问题列表

    * 2. 声明和初始化 o 2.1 我如何决定使用那种整数类型? o 2.2 64 位机上的 64 位类型是什么样的? o 2.3 怎样定义和声明全局变量和函数最好? o 2.4 extern 在函数声明中是什么意思? o 2.5 关键字 auto 到底...

    亮剑.NET深入体验与实战精要2

    本书既考虑到实际开发中经常遇到的困惑和难题,也分析了解决问题的思路和方法,更总结出项目开发中不可或缺的技术点及思想。读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集...

    你必须知道的495个C语言问题(PDF)

    以交换a 和b 的值。. . . . . . . . . . . . . . . . . . . . . . . . . 14 3.5 我可否用括号来强制执行我所需要的计算顺序? . . . . . . . . . . 14 3.6 可是&& 和|| 运算符呢?我看到过类似while((c = getchar())...

    亮剑.NET深入体验与实战精要3

    本书既考虑到实际开发中经常遇到的困惑和难题,也分析了解决问题的思路和方法,更总结出项目开发中不可或缺的技术点及思想。读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集...

Global site tag (gtag.js) - Google Analytics