Linux 库引入之分文件编程

分文件编程好处
将main函数和其他功能性函数放在不同的文件中,分模块的编程思想,分工明确,查找错误比较容易,责任可以划分清楚,程序也方便调试,并且主函数比较简洁。
将文件从同一目录下的另一个文件夹拷贝到当前文件夹

cp ../together.c(文件名称) .

这个代码是没有分文件编程的

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void initscores(int datas[],int size)
{
     int i;
    for(i=0;i<size;i++){
                printf("qing shu ru di%dge xue sheng de fen shu :\n",i+1);
        scanf("%d",&datas[i]);
        if(datas[i]>100||datas[i]<0){
                        printf("input error\n");
            system("pause");
            exit(-1);
        }
    }

}
void printscores(int datas[],int size)
{
     int i;
    for(i=0;i<size;i++){
    printf("di %dge xue sheng de cheng ji shi :%d\n",i+1,datas[i]);
    }
}
int findmax(int datas[],int size)
{ 
	int i;
    int max;
    max=datas[0];
    for(i=0;i<size;i++){
    if(datas[i]>max)
                max=datas[i];
    }
    return max;

}
int findmin(int datas[],int size)
{
    int i;
    int min;
    min=datas[0];
    for(i=0;i<size;i++){
    if(datas[i]<min)
                min=datas[i];
    }
    return min;
}
int findavagerge(int scores[],int size)
{
    int sum=0;
    int i;
    float avagerge;
    for(i=0;i<size;i++){
                sum+=scores[i];
    }
    avagerge=(float)sum/10;
    return avagerge;
}
int printret(int max,int min,float avagerge)
{
    printf("zui gao fen  :%d\n",max);
    printf("zui di  fen ¿%d\n",min);
    printf("ping jun fen:%f\n",avagerge);
}
int main()
{
    int scores[10];
    int len;
    int max;
    int min;
    float avagerge;
    len=sizeof(scores)/sizeof(scores[1]);
    initscores(scores,len);
    printscores(scores,len);
    max=findmax(scores,len);
    min=findmin(scores,len);
    avagerge=findavagerge(scores,len);
    printret(max,min,avagerge);
    system("pause");
    return 0;
}

主函数部分代码

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include"togetherfunc1.h"
int main()
{
    int scores[10];
    int len;
    int max;
    int min;
    float avagerge;
    len=sizeof(scores)/sizeof(scores[1]);
    initscores(scores,len);
    printscores(scores,len);
    max=findmax(scores,len);
    min=findmin(scores,len);
    avagerge=findavagerge(scores,len);
    printret(max,min,avagerge);
    system("pause");
    return 0;
}

// < >这个符号表示gcc在编译的时候默认的在/usr/include 或 /usr/local/include 下找这些头文件
" " 这符号表示优先从当前路径去找(当前的文件夹),然后再从/usr/include 下去找,找不到就报错。

功能性函数代码

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void initscores(int datas[],int size)
{
    int i;
    for(i=0;i<size;i++){
                printf("qing shu ru di%dge xue sheng de fen shu :\n",i+1);
        scanf("%d",&datas[i]);
        if(datas[i]>100||datas[i]<0){
                        printf("input error\n");
            system("pause");
            exit(-1);
        }
    }

}
void printscores(int datas[],int size)
{
     int i;
    for(i=0;i<size;i++){
    printf("di %dge xue sheng de cheng ji shi :%d\n",i+1,datas[i]);
    }
}
int findmax(int datas[],int size)
{
    int i;
    int max;
    max=datas[0];
    for(i=0;i<size;i++){
    if(datas[i]>max)
                max=datas[i];
    }
    return max;

}
int findmin(int datas[],int size)
{
    int i;
    int min;
    min=datas[0];
    for(i=0;i<size;i++){
    if(datas[i]<min)
                min=datas[i];
    }
    return min;
}
int findavagerge(int scores[],int size)
{
    int sum=0;
    int i;
 float avagerge;
    for(i=0;i<size;i++){
                sum+=scores[i];
    }
    avagerge=(float)sum/10;
    return avagerge;
}
int printret(int max,int min,float avagerge)
{
    printf("zui gao fen  :%d\n",max);
    printf("zui di  fen ¿%d\n",min);
    printf("ping jun fen:%f\n",avagerge);
}

.h 文件代码

void initscores(int datas[],int size);
void printscores(int datas[],int size);
int findmax(int datas[],int size);
int findmin(int datas[],int size);
int findavagerge(int scores[],int size);
int printret(int max,int min,float avagerge);

//.h 是将函数名拿来装在这个文件中的。

如何编译

gcc togetherfunc1.c togetherfunc.c
//这两个文件顺序可以调换

在/usr/include下查找文件

ls /usr/include
ls /usr/include |grep stdio(要查找的文件)
|  表示管道  过滤查找自己想要的文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值