/*
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