可以使用string.h頭文件中的strcat函數 char *a="123"; char *b = "abc"; strcat(a,b)即可,更多的字符串操作可以看一下string.h頭文件中 有好多封好的, 如果不想用的話就可以自己寫一個函數
成都創新互聯公司專業為企業提供曹妃甸網站建設、曹妃甸做網站、曹妃甸網站設計、曹妃甸網站制作等企業網站建設、網頁設計與制作、曹妃甸企業網站模板建站服務,10余年曹妃甸做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
函數內容:1.獲取兩個字符串的總長度,如total_len=len1+len2然后申請一個動態的數組大小為total_len 然后把字符串中的內容依次放進去就可以了。
代碼如下:
#include stdio.h
#include string.h
#include stdlib.h
int main()
{
char str[100];
char buf[10];
int i;
int n = 0;
bool flag = 0;
int j = 0;
//gets(str);
scanf("%s", str);
for (i = 0; i != strlen(str); ++ i)
{
if (str[i] = '0' str[i] = '9')
{
? ?buf[j] = str[i];
? ?j++;
? ?flag = 1;
}
else if (flag)
{
? ?n += atoi(buf);
? ?memset(buf,0,10);//清空緩存區
? ?flag = 0;
? ?j = 0;
}
}
printf("%s",buf);
printf("%d\n", n);
}
擴展資料
(C語言)常見字符函數和字符串函數
1、strlen
功能:計算字符串長度,不包含’\0’
返回值:返回字符串的字符數
說明:strlen() 函數計算的是字符串的實際長度,遇到第一個’\0’結束;參數指向的字符串必須以 ’ \0 ‘結束。函數返回值一定是size_t ,是無符號的。如果你只定義沒有給它賦初值,這個結果是不定的,它會從首地址一直找下去,直到遇到’\0’停止。
sizeof返回的是變量聲明后所占的內存數,不是實際長度,此外sizeof不是函數,僅僅是一個操作符,strlen()是函數。
2、strcpy
功 能: 將參數src字符串拷貝至參數dest所指的地址
返回值: 返回參數dest的字符串起始地址
說明:源字符串必須以’\0’結束。會將源字符串的’\0’拷貝到目標空間。目標空間必須可變。如果參數dest所指的內存空間不夠大,可能會造成緩沖溢出的錯誤情況,在編寫程序時需特別留意,或者用strncpy()來取代。
①命令行
#includestdio.h
#includestring.h
~
②定義函數-初始化
/*定義函數和字符串變量。*/
char *fun(char *s1,char *s2,char *r)
/*初始化,即賦初值。*/
{int len,cy=0,md;
char *p,*q,*t;
len=strlen(s1);
/*len=s1的長度=s2的長度。*/
p=s1+len-1;
/*p用于儲存,s1用于移動。
s1為數組名,指向數組首地址。指針s1向后移動len-1位,即指向字符串最后一位。*/
q=s2+len-1;
/*q用于儲存,s2用于移動。
s2為數組名,指向數組首地址。指針s2向后移動len-1位,即指向字符串最后一位。*/
t=r+len;
/*t用于存儲p和q指向字符相加的結果,
r用于移動,指向相加后數據首地址,可能產生進位,多預留一位,即len不減1。*/
*(t+1)='\0';
/*因為預留一位,所以字符串結束字符也向后移動一位。*/
~
③定義函數-循環函數
while(p=s1)
{md=*p-'0'+*q-'0'+cy;
/*md表示made decimal創建十進制數,即字符串相加后的數值。星p-'0'表示將字符轉換成數值。*/
if(md=10) cy=1;
else cy=0;
/*cy表示carry ,進位標志位。初始值為0,如果有進位,cy為1,下次循環時,加在更高一位上。*/
*t=md%10+'0';
/*星t用于儲存,md用于計算,cy用于傳遞進位。
因為進位md可能大于10,所以取余取個位,+'0'轉變為ASCLL碼值。*/
p--;q--;t--;}
/*向前移動,個位加完,加十位。*/
~
④定義函數-循環結束
if(cy==1) *t='1';
/*循環結束,即p<s1,由于p移動方向是向高位,此時p指向最高位。
如果cy==1,表示進位,令指針星t當前處為1。*/
else while(*r++=*++t);
/*如果cy==0,表示最高位沒有數,令指針星t從當前處后移一位到有數的地方。*/
return r;
/*相加后r所指字符串作為返回值。*/
}
~
⑤主函數
void main()
{char s1[100],s2[100],s3[101];
/*s123是用于存儲字符串的數組,考慮相加后可能有進位,s3開辟101位儲存空間。*/
strcpy(s1,"12345");
/*初始化s12,即賦初值。*/
strcpy(s2,"54321");
fun(s1,s2,s3);
printf("%s+%s=%s\n",s1,s2,s3)
}
~
⑥思路
1.字符串:s1,s2,s3(形參r)
2.字符轉換成數值
借助指針:p,q,t
轉換成ASCLL碼值
即數值:*p,*q,*t
轉換成對應整數
即數值:*p-'0',*q-'0',md%10+'0'
3.數值轉換成字符串:r
即r所指的字符串。