c語言中一個完整的函數(shù)由函數(shù)首部和函數(shù)體構成,而且定義函數(shù)時兩者都是必不可少的。
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比蓬溪網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式蓬溪網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋蓬溪地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
函數(shù)定義的一般形式如下:
類型標識符
函數(shù)名(形參表列)
//
這是函數(shù)首部
//
以下{
}內(nèi)的是函數(shù)體
{
說明部分
執(zhí)行部分
}
舉例說明如下:
//
定義一個不帶返回值的函數(shù)
//
函數(shù)功能:輸出形參的值
void
fun(int
a,
int
b)
{
printf("%d,
%d\n",
a,
b);
}
//
定義一個帶返回值的函數(shù)
//
函數(shù)功能:返回2個整數(shù)數(shù)的最大值
int
fun(int
a,
int
b)
{
return
ab
?
a
:
b;
}
首先,c中有且僅有一個主函數(shù),所以第一步,你必須的把兩個函數(shù)改成其他名字:
#include stdio.h
int function1()
{
int len=0;
int len2=0;
FILE* stream;
FILE* stream1;
FILE* stream2;
char buf[50];
char buf1[50];
char buf2[50];
char text[1024];
printf("input anfile path to open:");
scanf("%s",buf);
stream=fopen(buf,"r+");
fseek(stream,0,SEEK_END);
len=ftell(stream);
printf("the file %s length is %d!\n",buf,len);
len2 = len/2;
printf("intput 2 file name: \n");
scanf("%s%s",buf1,buf2);
fseek(stream,0,SEEK_SET);
stream1=fopen(buf1,"w+");
stream2=fopen(buf2,"w+");
fread(text,len2,1,stream);
fwrite(text,len2,1,stream1);
fread(text,len-len2,1,stream);
fwrite(text,len-len2,1,stream2);
fclose(stream);
fclose(stream1);
fclose(stream2);
return 0;
}
int function2()
{
int len=0;
int len2=0;
FILE* stream;
FILE* stream1;
char buf[50];
char buf1[50];
char text[1024];
printf("input anfile path to open:");
scanf("%s",buf);
stream=fopen(buf,"r+");
fseek(stream,0,SEEK_END);
printf("intput another file name: \n");
scanf("%s",buf1);
stream1=fopen(buf1,"r+");
fseek(stream1,0,SEEK_END);
len=ftell(stream1);
fseek(stream1,0,SEEK_SET);
fread(text,len,1,stream1);
fwrite(text,len,1,stream);
fclose(stream);
fclose(stream1);
remove(buf1);//remove the another file
return 0;
}
//第二部:如果有條件的調(diào)用它們的話,加上if語句或者switch語句,基本上都是這樣,此外,你可以把function1 和function2放入一個頭文件中,然后包含這個頭文件亦行。
void main()
{
function1();
function2();
}
#includestdio.h
int Common(int m,int n) //求最大公約數(shù)
{
int t = m%n;
while(t) //歐幾里得算法求最大公約數(shù)
{
m = n;
n = t;
t = m%n;
}
return n;
}
int Common1(int m,int n) //求最小公倍數(shù)
{
return m*n/Common(m,n);
}
int main()
{
int m,n;
printf("請輸入兩個整數(shù)\n");
scanf("%d%d",m,n);
printf("最大公約數(shù)為:%d\n",Common(m,n));
printf("最小公倍數(shù)為:%d\n",Common1(m,n));
return 0;
}
#include stdlib.h
#include stdio.h
typedef
struct list{
char data;
struct list *next;
} SLIST;
SLIST *creat(){
int c;
SLIST *h,*s,*r;
h=(SLIST *)malloc(sizeof(SLIST));/*生成頭結點*/
r=h;/*r指向當前表尾*/
scanf("%d",c);/*讀入數(shù)據(jù)*/
while(c!=1){/*未讀到數(shù)據(jù)結束標志時進入循環(huán)*/
s=(SLIST *)malloc(sizeof(SLIST));/*生成一個新結點*/
s-data=c;/*讀入的數(shù)據(jù)存入新結點的data域*/
r-next=s;/*新結點連到表尾*/
r=s;/*r指向當前表尾*/
scanf("%d",c);/*讀入數(shù)據(jù)*/
}
r-next='\0';/*置鏈表結束標志*/
return h;/*返回表頭指針*/
}
void take(SLIST *head){
SLIST *p;
p=head-next;/*p指向頭結點后的第一個結點*/
if(p=='\0')
printf("Linklist is null!\n");/*鏈表為空(只有頭結點)*/
else{/*鏈表非空*/
printf("head");
do{
printf("-%d",p-data);/*輸出當前結點數(shù)據(jù)域中的值*/
p=p-next;/*p指向下一個結點*/
}while(p!='\0');/*未到鏈表尾,繼續(xù)循環(huán)*/
printf("-end\n");
}
}
int main(){
SLIST *p;
p=creat();
take(p);
}
我在我的VS2010里面編譯運行,沒有崩潰
輸入
2 3 1
輸出
head-2-3-end
輸入
1
輸出
Linklist is null!