分文件編程好處
將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(要查找的文件)
| 表示管道 過濾查找自己想要的文件