Linux Linux程序练习二
/*
编写一个程序读取a.txt文件,将文件内容数字从小到大排序,并将排序结果写入b.txt。
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h> //插入排序
void InertionSort(int * arr,int len)
{
if(arr==NULL)
{
printf("传入参数不可以为空!\n");
return;
}
int i=,j=,k=,temp=;
for(i=;i<len;i++)
{
k=i;
temp=arr[k];
for(j=i-;j>=&&temp<arr[j];j--)
{
arr[j+]=arr[j];
k=j;
}
//k的作用是因为当temp>=arr[j]时,将不会进入循环,此时j是有序数组的最后一个元素
//arr[j]=temp;会将最后一个有序元素覆盖了
//arr[j]=temp; 错误
arr[k]=temp;
}
} int main(int arg, char * args[])
{
if(arg<)
{
printf("本程序需要两个参数!\n");
return ;
}
//define file stream
FILE *pfr=NULL;
//open the file in read mode
pfr=fopen(args[],"r");
//judge
if(pfr==NULL)
{
printf("read the file failed ! error msg:%s\n",strerror(errno));
return ;
}
//create arr
int index=;
//这里index是作为数组长度使用的,index的初始值是0,所以循环之后index会多1,正好此时index就是数组的长度
int arr[]={};
char buf[]={};
while(fscanf(pfr,"%s",buf)!=EOF)
{
arr[index++]=atoi(buf);
memset(buf,,sizeof(buf));
}
//close the file stream
if(pfr)
{
fclose(pfr);
pfr=NULL;
}
InertionSort(arr,index);
//define new file stream
FILE * pfw=NULL;
//open new file in append mode
pfw=fopen(args[],"a");
if(pfw==NULL)
{
printf("write the file failed ! error msg:%s\n",strerror(errno));
return ;
}
//write the file
int num=;
while(num<index)
{
memset(buf,,sizeof(buf));
sprintf(buf,"%d\n",arr[num++]);
fputs(buf,pfw);
}
//close the file stream
if(pfw)
{
fclose(pfw);
pfw=NULL;
}
return ;
}

Linux Linux程序练习二的更多相关文章
- linux应用程序地址布局,王明学learn
linux应用程序地址布局 在学习Linux应用程序开发时,经常会遇到如下概念:代码段.数据段.BSS段(Block Started by Symbol,又名:未初始化数据段).堆(heap)和栈(s ...
- linux应用程序开发-文件编程-系统调用方式
在看韦东山视频linux驱动方面有一些吃力,究其原因,虽然接触过linux应用程序编程,但是没有深入去理解,相关函数用法不清楚,正好看到国嵌视频对这一方面讲的比较透彻, 所以把学习过程记录下来,也作为 ...
- Linux内核分析(二)----内核模块简介|简单内核模块实现
原文:Linux内核分析(二)----内核模块简介|简单内核模块实现 Linux内核分析(二) 昨天我们开始了内核的分析,网上有很多人是用用源码直接分析,这样造成的问题是,大家觉得很枯燥很难理解,从某 ...
- UNIX/Linux C 程序员需要掌握的七种武器
我是一名普通的软件工程师,不是什么技术大牛.这篇文章所提到的"七种武器"只是我这些年工作经验的一点体会和感悟,如果有错误的地方,还请大家指正. (一)C语言 作为一名C程序员,熟练 ...
- Linux内存管理(二)
Linux内存管理之二:Linux在X86上的虚拟内存管理 本文档来自网络,并稍有改动. 前言 Linux支持很多硬件运行平台,常用的有:Intel X86,Alpha,Sparc等.对于不能够通用的 ...
- 编写Linux C++程序如何影响VIRT(虚存)和RES(实存/常驻内存)
转载目的,主要是为了理解lVIRT虚拟内存.RES常驻内存.共享内存SHR.SWAP和实际程序应用如何对应的. 在Linux命令行中执行top命令,可以查询到所有进程使用的VIRT虚拟内存.RES常驻 ...
- Linux学习之CentOS(二)--初识linux的一些常用命令
Linux学习之CentOS(二)--初识linux的一些常用命令 在VM上安装完了CentOS6.4以后,看着linux系统成功跑起来,心里小激动了一把......但是前方学习的道路还很遥远... ...
- Linux内核学习笔记二——进程
Linux内核学习笔记二——进程 一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器 ...
- Linux及安全实践二
Linux及安全实践二 基本内核模块 20135238 龚睿 1. 理解模块原理 linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个 ...
- Linux Shell 程序调试
Linux Shell 程序调试 Shell程序的调试是通过运行程序时加入相关调试选项或在脚本程序中加入相关语句,让shell程序在执行过程中显示出一些可供参考的“调试信息”.当然,用户也可以在she ...
随机推荐
- 专访阿里巴巴研究员“赵海平”:Facebook的PHP底层性能优化之路(HipHop,HHVM)
专访阿里巴巴研究员“赵海平”:Facebook的PHP底层性能优化之路 http://www.infoq.com/cn/articles/interview-alibaba-zhaohaiping
- c# 播放mp3
转载:http://www.cnblogs.com/igrl/archive/2010/03/29/1699975.html /// <summary> /// 播放MP3文件 /// & ...
- Android消息机制探索(Handler,Looper,Message,MessageQueue)
概览 Android消息机制是Android操作系统中比较重要的一块.具体使用方法在这里不再阐述,可以参考Android的官方开发文档. 消息机制的主要用途有两方面: 1.线程之间的通信.比如在子线程 ...
- php图片木马讲解
这是一个非常有趣的后门,它并没有依靠正常模式去隐藏起内容(比如 base64/gzip 编码),但是它却把自己的数据隐藏在JPEG图片的EXIF头部中了.它也使用exif_read_data和preg ...
- http://blog.csdn.net/rosten/article/details/17068285
http://blog.csdn.net/rosten/article/details/17068285
- 一起來玩鳥 Starling Framework(6)Juggler、Tween、以及DelayCall
這篇開始來講Starling裡的Animation.Juggle是個簡單的Class,用來控制動畫的進行.他負責管理經由add()加進來的實現IAnimatable介面的物件,然後當Juggler的a ...
- solr 统计频率(term frequency)
1.统计单词在某个字段出现的频率次数 term frequency实现使用了function query. 例如统计‘公司’这个关键字在text这个字段中出现的次数 在返回的时候进行计算统计,即在返回 ...
- solr6.6 导入 pdf/doc/txt/json/csv/xml文件
文本主要介绍通过solr界面dataimport工具导入文件,包括pdf.doc.txt .json.csv.xml等文件,看索引结果有什么不同.其实关键是managed-schema.solrcon ...
- 删除Kafka中topic
步骤: 1.编辑Kafka启动时加载的配置文件server.properties,添加一行:delete.topic.enable=true 2.重启Zookeeper和Kafka 3.执行: ./b ...
- 对帝国cms、dedecms、phpcms等负载测试总结
来自:http://www.chinaz.com/web/2013/0729/311360.shtml 担心被骂,本不想写这篇文章.犹豫良久,最终还是决定写.希望能够帮助到一些朋友,认识到数据库索引正 ...