/*
1、编写一个程序读取a.txt文件,将文件内容数字从小到大排序,并将排序结果写入b.txt。
a.txt文件内容如下:
32
45
65
32
67
454
89
54
24
75
3
67
890
32
1
*/
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
int main(int arg, char *args[])
{
if(arg<2)
{
printf("PRGM Error!\n");
}
FILE * pr = fopen(args[1],"r");
FILE * pw = fopen("sorta.txt","w");
if(pr == NULL)
{
printf("%s",strerror(errno));
return -1;
}
int num[15],Count=0,i,j;
char buf[10];
memset(buf,0,sizeof(buf));
while(fgets(buf,sizeof(buf),pr))
{
num[Count++] = atoi(buf);
}
for(i = 0; i < 15; ++i)
for(j = i+1; j < 15; j++)
{
if(num[i]>num[j])
{
num[i] ^= num[j];
num[j] ^= num[i];
num[i] ^= num[j];
}
}
if(pr == NULL)
{
printf("%s",strerror(errno));
return -1;
}
for(i = 0; i < 15; ++i)
{
fprintf(pw,"%d\n",num[i]);
}
fclose(pr);
fclose(pw);
return 0;
}
/*
2、通过读取/proc下的相关文件,得到系统CPU信息,内存信息。
*/
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int arg, char *args[])
{
FILE * pr = fopen("/proc/meminfo","r");
int pw = open("/proc/cpuinfo",O_RDONLY);
if(pr == NULL || pw < 0)
{
printf("%s",strerror(errno));
return -1;
}
char buf[10];
memset(buf,0,sizeof(buf));
while(fgets(buf,sizeof(buf),pr))
{
write(STDOUT_FILENO,buf,sizeof(buf));
memset(buf,0,sizeof(buf));
}
while(read(pw,buf,sizeof(buf)))
{
write(STDOUT_FILENO,buf,sizeof(buf));
memset(buf,0,sizeof(buf));
}
fclose(pr);
close(pw);
return 0;
}
/*
3、通过读取读取c.txt文件内容中等号右值,并将右值最大值,最小值和平均值打印到屏幕。
c.txt文件内容如下
index1 = 45
index2 = 36
index3 = 231
index4 = 43
index5 = 100
index6 = 123
index7 = 51
*/
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
int main(int arg, char *args[])
{
FILE * pr = fopen("c.txt","r");
if(pr == NULL)
{
printf("%s",strerror(errno));
return -1;
}
int num[7]={0},Count=-1,i,j;
float sum=0;
char buf[20];
memset(buf,0,sizeof(buf));
while(++Count,fgets(buf,sizeof(buf),pr))
{
char *tmp = NULL;
tmp = strstr(buf,"=");
num[Count] = atoi(tmp+strlen("="));
sum += num[Count];
}
for(i = 0; i < 7; ++i)
for(j = i+1; j < 7; j++)
{
if(num[i]>num[j])
{
num[i] ^= num[j];
num[j] ^= num[i];
num[i] ^= num[j];
}
}
printf("Max:%d \nMin:%d \nAvg:%f \n",num[0],num[6],sum/7);
fclose(pr);
return 0;
}
备份地址: 【Linux文件操作demo】