C语言中如何编写一个字符串复制函数,并在主函数中调用它。 c语言 写一个函数能将两个字符串连接,在主函数中调用

C\u8bed\u8a00\uff1a\u5199\u4e00\u51fd\u6570\uff0c\u5c06\u4e24\u4e2a\u5b57\u7b26\u4e32\u8fde\u63a5

\u4f1a\u4e0d\u4f1a\u662f\u7cfb\u7edf\u6d4b\u8bd5\u7684\u6570\u636e\u592a\u957f\u4e86\uff1f
\u6539\u6210s1[161],s2[81]\u8bd5\u8bd5\uff1f

\u8fd9\u6837\u5c31\u53ef\u4ee5\u4e86\uff0c\u6211\u5df2\u7ecf\u5728vc6\u901a\u8fc7\u8c03\u8bd5\u8fd0\u884c\u4e86\uff0c\u4e0d\u8fc7\u8981\u6ce8\u610f\u4e00\u70b9\u54e6\uff0c\u867d\u7136c\u8bed\u8a00\u91cc\u9762\u6ca1\u6709string\u7c7b\u578b\u7684\u53d8\u91cf\uff0c\u4f46\u662f\u5728c++\u91cc\u9762\u6709\uff0c\u6240\u4ee5\u4e3a\u4e86\u9632\u6b62\u4e0d\u5fc5\u8981\u7684\u9ebb\u70e6\uff0c\u4f60\u8fd9\u91cc\u7684\u53d8\u91cf\u540d\u5b57\u6700\u597d\u4e0d\u8981\u7528string
#include
void stringcat(char str1[],char str2[],char str[])
{
int i,j;
for(i=0;str1[i]!='\0';i++)
str[i]=str1[i];
for(j=0;str2[j]!='\0';j++)
str[i+j]=str2[j];
str[i+j]='\0';
}
void main()
{
char s1[]="this is a test",s2[]=", test is a good thing.",s3[40];
stringcat(s1,s2,s3);
puts(s3);
}

#include<stdio.h>

char *custom_cpy(char *to,char *from);

int main(int argc,char *argv[]){

char *from = "i like c langanger";

char to[30];

char *ptr = custom_cpy(to,from);

printf("%s,%s
",ptr,to);

return 0;

}

char *custom_cpy(char *to,char *from){

if(to == NULL || from == NULL){

return NULL;

}   

char *p = to; 

for(;*from!='\0';from++,to++){

*to = *from;

}   

*to = '\0';//拷贝完毕之后一定要加一个结束符号

return p;

}

扩展资料:

字符串相关函数应用:

1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn。

例:concat(‘11’,'aa’)='11aa’;

2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。

例:copy(‘abdag’,2,3)=’bda’;

3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。

例:s:=’abcde’;delete(s,2,3);结果s:=’ae’;

4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置

例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’;

5. 求字符串长度 length(s) 例:length(‘12abc’)=5;

参考资料:

百度百科-字符串



可以利用字符指针结合while循环的方式来编写字符串复制函数。


具体实现方法可以参考如下程序:

#include<stdio.h>
void str_copy(char *str1, char *str2)  // 字符串复制函数

    while(*str1++ = *str2++);  // 将字符串str2中的每个字符逐个复制到str1中,直到遇到字符串结束字符'\0'
}
void main()
{
    char s1[] = "abcd";
    char s2[5];
    str_copy(s2, s1);  // 将字符串s1复制到s2中
    printf("%s", s2);  // 输出字符串s2,输出结果为abcd
}


/*字符串复制的函数和调用*/

#include "stdio.h"

char string(char a[],char b[]) //定义复制的字符串
{
int i; //计数
for(i=0;a[i-1]!='\0';i++) //复制
{
b[i] = a[i];
}
}
int main (void)
{
char a[]="12345asfd"; //字符串
char b[100];

string(a,b); //把a的字符串复制到b
printf("%s\n",b);//打印字符串
}

#include "stdio.h"
#include "stdlib.h"
int stringcopy(char *str1,char *str2);
main()
{
char str1[40],str2[20];
printf("输入第一个字符串");
scanf("%s",str1);
printf("输入第二个字符串");
scanf("%s",str2);
stringcopy(str1,str2);
getchar(); getchar();
return 0;
}
int stringcopy(char *str1,char *str2)
{
int i=0,j=0;
do
{
i++;
}while(*(str1+i)!='\0');
do
{
*(str1+i)=*(str2+j);
i++;j++;
}while(*(str2+j-1)!='\0'&&i<40);
if(i>=40)
printf("对不起,空间不够,不能复制!");
else
{
printf("%s\n",str1);

}
return 0;
}

void strcpy(char *des, const char *sour){ des = (char*)malloc(strlen(sour)+1); while(*sour != '\0') { *des = *sour; des++; sour++; } *des = '\0';}}

  • C璇█涓庢牱灏涓涓瓧绗︿覆鐨勭0,2,4,6,8鈥︹︿綅缃殑瀛楃澶嶅埗鍒板彟涓涓...
    绛旓細杩欐牱锛歩nclude <stdio.h> include <string.h> int main(void){ int i;char string[9]="abcdefg";for(i=0;i<7;i++,i++)printf("%c",string[i]);return 0;}
  • C璇█棰樼洰:缂栧啓鍑芥暟strcopy,瀹炵幇鎶瀛楃涓s1澶嶅埗鍒皊2銆
    绛旓細include<stdio.h> main(){ void strcopy(char *,char *);char s1[20]="abc";char s2[10]="def***";strcopy(s1,s2);printf("%s",s1);} void strcopy(char *s1,char *s2)/*s1鏄帴鍙瀛楃涓茬殑鍐呭瓨鐨勮捣濮嬪湴鍧锛宻2鏄澶嶅埗瀛椾覆璧峰鍦板潃*/ { for ( ; *s2; ++s2,++s1)/*浠庣涓涓...
  • ...缂栧啓涓涓鑳藉皢涓涓瓧绗︿覆澶嶅埗鍒颁竴涓瓧绗︽暟缁勪腑鐨绋嬪簭.
    绛旓細include<iostream> using namespace std;char * mystrcpy(char * strDest,const char * strSrc){ if ((strDest==NULL)||(strSrc==NULL)) //[1]throw "Invalid argument(s)"; //[2]char * strDestCopy=strDest; //[3]while ((*strDest++=*strSrc++)!='\0'); //[4]return ...
  • (C璇█)浠庨敭鐩樹笂杈撳叆涓涓瓧绗鏁扮粍,骞跺皢鍏澶嶅埗鍒板彟涓涓瓧绗︽暟缁勩
    绛旓細printf("%c",a[i]);//杩欓噷杈撳嚭鐨勫簲璇ヤ负瀛楃缁刟鎵嶅緱鍒扮粨鏋 printf("\n");getch();} 鐜板湪鎴戞潵鍥炵瓟浣犵殑绋嬪簭杩愯鍚巄[6]鏄┖鑰屼笉鏄痺锛屽洜涓轰綘鐢ㄥ嚱鏁皊trcpy鎶婃暟缁刟鐨5涓猶鍜屼竴涓榎0鈥澶嶅埗鍒癰涓紝骞跺皢鍏跺墠闈㈢殑6涓獁瑕嗙洊锛屼篃灏辨槸璇磋繖鏃跺欑殑b鍌ㄥ瓨涓簈qqqq\0wwww锛岀劧鍚庝綘鐢%c杈撳嚭锛岀鍏釜褰撶劧...
  • c璇█ 杈撳叆涓涓瓧绗︿覆,灏嗚瀛楃涓蹭腑浠庣m涓瓧绗﹀紑濮鐨鍏ㄩ儴瀛楃澶嶅埗鍒板彟...
    绛旓細while(n--){ s1++;} s1鏄痗har * 绫诲瀷鐨勶紝 浣犳妸s1鎯虫垚鏄細 char s1[m+n]鐨勪竴涓鏁扮粍锛 s1++ 鐩稿綋浜庝粠s1[0]--->s1[1] ; 鐢╳hile(n --) 鍒欑Щ鍔ㄤ簡n娆★紝鍒欑Щ鍒颁簡s1[n-1]浣嶇疆
  • ...涓瓧绗),瑕佹眰灏嗗叾涓鐨鏁板瓧瀛楃澶嶅埗鍒板彟涓涓瓧绗︿覆涓
    绛旓細include <stdio.h>int main(){ char s1[100], s2[100]; int i,j; gets(s1); for(i = j = 0; s1[i]; i ++) if(s1[i]>='0'&&s1[i]<='9') s2[j++] = s1[i]; s2[j] = 0; puts(s2); return 0;}鎸囬拡鏂瑰紡绫讳技.include <stdio.h>int ...
  • C璇█闂:灏涓涓瓧绗︿覆澶嶅埗鍒板彟涓涓瓧绗︿覆涓
    绛旓細copy_string(a,b)b蹇呴』鏄紑杈熺殑鍐呭瓨绌洪棿鐨 char *a="no money no life"; a鍙槸涓涓寚閽 鎸囧悜浜涓涓瓧绗︿覆甯歌瘑 char b[]="one world one dream"; 鏄嚜鍔ㄦ牴鎹瓧绗︿覆闀垮紑杈熺┖闂 鑰屼笖 b蹇呴』鏈夎冻澶熺殑绌洪棿鏉ユ帴绾砤涓殑瀛楃涓诧紝涓嶇劧涔熶細鎶ラ敊 鍥犱负绌洪棿涓嶅浜 ...
  • c璇█涓浣鍍忕敤鍑芥暟strcpy澶嶅埗瀛楃涓涓鏍峰鍒舵暟瀛,濡傚鍒30銆
    绛旓細i++) { *des++ = *src++; }return 0;}璇存槑锛氫负浜嗛傚悎澶у鏁版儏鍐碉紝涓嶆柟渚垮儚strcpy()涓鏍凤紝鐢ㄢ淺0鈥濊嚜鍔ㄥ垽鍒瀛楃涓缁撳熬銆傚洜姝ょ敤绫讳技浜巗trncpy()瀹氶暱搴︾殑鏂瑰紡锛岃繘琛屾暟瀛鎷疯礉銆傚叾瀹冩暟瀛楃被鍨嬶紝姣斿float, double, 閮藉彲浠ユ寜鐓х被浼肩殑鏂瑰紡锛岀紪鍒跺搴旂殑ncpy()绋嬪簭銆傚彲浠ョ户缁氦娴侊紝璋㈣阿銆
  • 姹涓涓猚璇█涓瀹炵幇瀛楃涓涓ゆ澶嶅埗鐨勫嚱鏁扮殑浠g爜
    绛旓細1)绠鍗曟潵锛岀洿鎺ョ敤 strcat 鍑芥暟锛岄渶瑕佸寘鍚ご鏂囦欢 string.h 2)鑷繁瀹炵幇鐨勮瘽涔熶笉楹荤儲锛屼絾鏄鑰冭檻涓浜涚粏鑺傦細鍋囪涓涓瓧绗︿覆鎸囬拡涓 str1锛宻tr2 锛岀幇鍦ㄨ璁 str1 鍜 str2 杩炴帴鎴愪竴涓柊鐨勫瓧绗︿覆銆俛.鑰冭檻鎸囬拡 str1,str2 鏄惁闈炵┖ b.濡傛灉灏唖tr2鐨勫唴瀹圭洿鎺ヨ繛鎺ュ埌str1鐨勬湯灏撅紝瑕佽冭檻str1鏄惁鏈夎冻澶熺殑...
  • c璇█:缂栧啓鍑芥暟,灏涓涓瓧绗︿覆鏁扮粍a涓殑鍏冮煶瀛楁瘝澶嶅埗鍒板彟澶栦竴涓瓧绗︿覆b...
    绛旓細include <stdio.h> include <string.h> void fun(char a[], char b[]){ char* vs="aeiouAEIOU";int l,i,j,k;l=strlen(a);k=0;for(i=0;i<l;i++){ for(j=0;j<10;j++){ if(a[i]==vs[j]){ b[k++]=a[i];break;} } } b[k]='\0';} int main(){ char a[...
  • 扩展阅读:c#截取字符串中的一部分 ... c #根据符号分割字符串 ... c语言字符型数据怎么输出 ... c语言两个字符串比较 ... 回文字符串 ... c语言如何拷贝字符串 ... c输入字符串的几种方式 ... c语言输入一个字符串 ... c语言如何声明一个字符串 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网