#include stdio.h
創(chuàng)新互聯(lián)是一家專業(yè)提供臺(tái)江企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為臺(tái)江眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
#include string.h
void catstring(char *str0, int len0, char *str1, int len1, char *str2, int len2)
{
if (len2 = len0 + len1) {
return;
}
memcpy(str2, str0, len0);
memcpy(str2 + len0, str1, len1);
}
int main()
{
char str0[20] = "Golden";
char str1[20] = "View";
char str2[20] = { 0 };
catstring(str0, strlen(str0), str1, strlen(str1), str2, 20);
printf("str2 = %s\n", str2);
return 0;
}
請(qǐng)采納,謝謝!
#include?"stdafx.h"
#include?string.h
#include?stdio.h
#include?stdlib.h
struct?STUDENT{
int?Number;
char?Name[32];
int??Class;
float?Score;
};
#define?IS_WHITE(ch)?((unsigned?char)ch=15?||?ch=='?')
//trim函數(shù)去除字符串str前后的空白字符
char?*trim(char?*str)
{
char?ch;
char?*p,?*q,?*r;
p=str;?q=str;?r=str-1;
while(1)
{
ch=*p;
if?(!IS_WHITE(ch))?break;
if?(ch==0)?break;
p++;
}
while(1)
{
ch=*p++;
*q=ch;
if?(ch==0)?break;
if?(!IS_WHITE(ch))?r=q;
q++;
}
*++r=0;
return?str;
}
int?InputStudent(const?char?*filename)
{
FILE?*f;
int?n;
char?str[200];
struct?STUDENT?student;
f=fopen(filename,"wb");
if?(f==NULL)?return?0;???//返回0表示失敗
for?(n=0;?;?++n)
{
printf("請(qǐng)輸入學(xué)號(hào):?");?scanf("%d",?student.Number);
if?(student.Number==0)?break;
while(1)
{
printf("請(qǐng)輸入姓名:");??gets(str);
trim(str);
if?(str[0]==0)?continue;?//確保姓名不為空
strncpy(student.Name,?str,?sizeof(student.Name)-1);
//上句確保輸入姓名長(zhǎng)度不超過31字節(jié)
break;
}
printf("請(qǐng)輸入班級(jí):\n");?scanf("%d",?student.Class);
printf("請(qǐng)輸入成績(jī):\n");?scanf("%f",?student.Score);
fwrite(student,?sizeof(student),1,?f);
//??????printf("%08d?%-32s?%-3d?%f\n",
//??????????student.Number,
//??????????student.Name,
//??????????student.Class,
//??????????student.Score);
}
fclose(f);
return?n;???//返回有多少個(gè)學(xué)生信息錄入
}
void?SortStudent(struct?STUDENT?*student,?int?n)
{
int?i,j;
struct?STUDENT?*a,?*b,?t;
for?(j=0;?jn-1;?++j)
{
a=student+j;
for?(i=j+1;?in;?++i)
{
b=student+i;
if?(a-Number=b-Number)?continue;?//否則交換
memcpy(t,a,sizeof(struct?STUDENT));
memcpy(a,b,sizeof(struct?STUDENT));
memcpy(b,t,sizeof(struct?STUDENT));
}
}
}
void?PrintStudent(const?struct?STUDENT?*student,?int?n)
{
int?i;
for?(i=0;?in;?++i,?++student)
printf("%08d?%-32s?%-3d?%6.1f\n",
student-Number,
student-Name,
student-Class,
student-Score);
}
void?main()
{
int?n1,?n2,?n;
struct?STUDENT?*student;
const?char?fn1[]="d:\\student1.bin";?//文件1
const?char?fn2[]="d:\\student2.bin";?//文件2
const?char?fn[]="d:\\student.bin";???//合并后的文件
FILE?*f;
printf("學(xué)生信息錄入(錄入過程中,學(xué)號(hào)輸入為0,則退出錄入)\n");
printf("第一步:%s中的學(xué)生信息錄入:\n",?fn1);
n1=InputStudent(fn1);
if?(0==n1)
{
printf("%s中的學(xué)生信息錄入有誤,退出程序\n",fn1);
return;
}
printf("第二步:%s中的學(xué)生信息錄入:\n",?fn2);
n2=InputStudent(fn2);
if?(0==n2)
{
printf("%s中的學(xué)生信息錄入有誤,退出程序\n",fn2);
return;
}
printf("第三步:合并%s,?%s\n",fn1,fn2);
student=(struct?STUDENT?*)malloc((n1+n2)*sizeof(struct?STUDENT));
f=fopen(fn1,"rb");
if?(f==NULL)?{printf("%s打開失敗,退出程序\n",fn1);?return;}
n=fread(student,sizeof(struct?STUDENT),?n1,?f);
fclose(f);
if?(n!=n1)?{printf("%s讀入錯(cuò)誤,退出程序\n",fn1);?return;}
f=fopen(fn2,"rb");
if?(f==NULL)?{printf("%s打開失敗,退出程序\n",fn2);?return;}
n=fread(student+n1,sizeof(struct?STUDENT),?n2,?f);
//??PrintStudent(student,n1+n2);??//輸出學(xué)生信息
fclose(f);
if?(n!=n2)?{printf("%s讀入錯(cuò)誤,退出程序\n",fn2);?return;}
n=n1+n2;
SortStudent(student,n);
f=fopen(fn,"wb");
if?(f==NULL)?{printf("%s建立失敗,退出程序\n",fn);?return;}
fwrite(student,?sizeof(struct?STUDENT),?n,?f);
fclose(f);
PrintStudent(student,n);??//輸出學(xué)生信息
free(student);
}
int main() {
char a[] = "123456";
char b[] = "abcde";
int buflen = strlen(a) + strlen(b);
char *p = (char*)malloc(buflen + 1);
memset(p, 0, buflen);
printf("%d\n", buflen);
strcpy(p, a);
strcat(p, b);
printf("%s\n", p);
free(p);
}
C的數(shù)組在創(chuàng)建后不可變得,因此數(shù)組合并的思想就是把數(shù)組塞到一個(gè)足夠大的空間里形成新數(shù)組。
上面的函數(shù)是比較簡(jiǎn)單的合并方法
//兩個(gè)數(shù)組合并,參考代碼:
#include?"stdio.h"
int?d=0;??//用于記錄數(shù)組c的大小,和數(shù)組c的輸出類的一些操作
void?main()
{
int?a[50],b[50],c[100];
int?i,j,k;???????????//i表示a數(shù)組的大小??j表示b數(shù)組的大小??k用于數(shù)組的輸出
printf("數(shù)組a的輸入,輸入一個(gè)數(shù),表明你要輸入多少個(gè)數(shù)到數(shù)組a中\(zhòng)n");
scanf("%d",i);
for(k=0;ki;k++)
scanf("%d",a[k]);
printf("數(shù)組b的輸入,輸入一個(gè)數(shù),表明你要輸入多少個(gè)數(shù)到數(shù)組b中\(zhòng)n");
scanf("%d",j);
for(k=0;kj;k++)
scanf("%d",b[k]);
void?px(int?*p,int?n);??//聲明?排序?冒泡法
px(a,i);???????????????//調(diào)用
px(b,j);???????????????//調(diào)用
void?prin(int?*p,int?n);??//聲明?數(shù)組的輸出函數(shù)
prin(a,i);
prin(b,j);
void?hb(int?*o,int?*p,int?*q,int?m,int?n);?//聲明?兩個(gè)數(shù)組的合并函數(shù)??前提:這倆個(gè)數(shù)組必須是排好序的
hb(c,a,b,i,j);
prin(c,d);
}
void?px(int?*p,int?n)?????//自定義函數(shù)???排序??冒泡法
{int?i,j,t,leap;??????
for(i=0;in-1;i++)??????//外層循環(huán)n-1次,一次循環(huán)沉淀一個(gè)數(shù)
{
leap=0;????????????????//leap作為標(biāo)記,是否兩數(shù)相換
for(j=0;jn-i-1;j++)???//內(nèi)循環(huán)n-i-1次
{
if(p[j]p[j+1])????//比較兩個(gè)數(shù)
{
t=p[j];???????
p[j]=p[j+1];
p[j+1]=t;???????//來(lái)兩個(gè)數(shù)交換
leap=1;?????????//交換了,標(biāo)記leap=1
}
}
if(leap==0)?break;??????//經(jīng)歷了一個(gè)內(nèi)for循環(huán),leap==0的話,表明排序成功了,不需要接下來(lái)在排序了。
}
}
void?prin(int?*p,int?n)???//自定義函數(shù)??數(shù)組輸出函數(shù)
{
int?k,sum=0;
for(k=0;kn;k++)
{
printf("%d?",p[k]);
sum++;
if(sum%10==0)?printf("\n");
}
printf("\n");
}
void?hb(int?*o,int?*p,int?*q,int?m,int?n)?????//m為p指向數(shù)組的大小???n為q指向數(shù)組的大小??指針o指向合并的數(shù)組
{
int?i=0,j=0,k;?????????????????????????//i為p指向數(shù)組的大小???j為q指向數(shù)組的大小
while(1)
{
if(p[i]q[j])
{
o[d]=p[i];
i++;
d++;
}
else
{
o[d]=q[j];
j++;
d++;
}
if(i==m||j==n)?break;
}
if(i==m)
{
for(k=j;kn;k++)
{
o[d]=q[k];
d++;
}
}
if(j==n)
{
for(k=i;km;k++)
{
o[d]=p[k];
d++;
}
}
}
首先假設(shè)合并函數(shù)的功能:將兩個(gè)兩位數(shù)的整數(shù) a、b 合并成一個(gè)整數(shù)放在 c 中。合并的方
式是:將 a 的十位和個(gè)位數(shù)依次放在 c 數(shù)千位和十位上,b 數(shù)的十位和個(gè)位數(shù)依次放在 c 數(shù)的個(gè)位和百位上。
實(shí)現(xiàn)方法如下:
新聞名稱:c語(yǔ)言編寫合并分店函數(shù),c語(yǔ)言編寫分段函數(shù)程序
文章出自:http://jinyejixie.com/article24/dsecsje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、定制開發(fā)、網(wǎng)站設(shè)計(jì)、網(wǎng)站排名、全網(wǎng)營(yíng)銷推廣、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容