分文件编程好处
将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(要查找的文件)
| 表示管道 过滤查找自己想要的文件