c语言 利用函数将一个字符串复制并替换到另一个中 c语言,两个字符数组,利用一个函数将一个内容复制并替换另一个...

C\u8bed\u8a00\u95ee\u9898\uff1a\u5199\u4e00\u4e2a\u51fd\u6570,\u5c06\u4e00\u4e2a\u5b57\u7b26\u4e32\u4e2d\u7684\u5143\u97f3\u5b57\u6bcd\u590d\u5236\u5230\u53e6\u4e00\u5b57\u7b26\u4e32\u540e\u9762,\u7136\u540e\u8f93\u51fa

#include<stdio.h>
#include<string.h>
void input(char st[]);//\u5b9a\u4e49\u8f93\u5165\u51fd\u6570
void output(char st[]);//\u5b9a\u4e49\u8f93\u51fa\u51fd\u6570
void letter(char x[],char y[]);//\u5b9a\u4e49\u5143\u97f3\u590d\u5236\u51fd\u6570
int main()
{
char s1[20],s2[10];
input(s1);//\u8c03\u7528\u8f93\u5165\u51fd\u6570
letter(s1,s2);//\u8c03\u7528\u5143\u97f3\u590d\u5236\u51fd\u6570
output(s2);//\u8c03\u7528\u8f93\u51fa\u51fd\u6570
return 0;
}
//\u8f93\u5165\u51fd\u6570
void input(char st[])
{
printf("Please enter string:");
gets(st);
}
//\u5143\u97f3\u590d\u5236\u51fd\u6570
void letter(char x[],char y[])
{
int n=strlen(x);
for(int i=0,j=0;i<n;
(x<i>=='a'||x<i>=='e'||x<i>=='i'||x<i>
=='o'||x<i>=='u'||x<i>
=='A'||x<i>=='E'||x<i>=='I'||x<i>
=='O'||x<i>=='U')?y[j++]=x[i++]:i++);
y[j]='\0';
}
//\u8f93\u51fa\u51fd\u6570
void output(char st[])
{
printf("The final string:%s\n",st);
}

\u6269\u5c55\u8d44\u6599\uff1a\u51fd\u6570\u65b9\u6cd5
#include<stdio.h>
#include<string.h>
char ycopy(char x[],char y[]);//\u5b9a\u4e49\u590d\u5236\u51fd\u6570
main()
{
char a[20],b[20];
gets(a);//\u8f93\u5165\u5b57\u7b26\u4e32
b[20]=ycopy(a,b);//\u8c03\u7528\u590d\u5236\u51fd\u6570
puts(b);//\u8f93\u51fa\u590d\u5236\u540e\u7684\u5b57\u7b26\u4e32
return 0;
}
//\u5143\u97f3\u590d\u5236\u51fd\u6570
char ycopy(char x[],char y[])
{
int m,i,j;
m=strlen(x);
for(i=0,j=0;i<m;i++){
if(x<i>=='a'||x<i>=='A')
y[j++]=x<i>;
else if(x<i>=='e'||x<i>=='E')
y[j++]=x<i>;
else if(x<i>=='i'||x<i>=='I')
y[j++]=x<i>;
else if(x<i>=='o'||x<i>=='O')
y[j++]=x<i>;
else if(x<i>=='u'||x<i>=='U')
y[j++]=x<i>;
}
y[j]='\0';
return y[j];
}

\u8fd9\u662f\u56e0\u4e3achar* b = "\u2026\u2026"\uff0c\u4e2d\u3002 b\u662f\u4e00\u4e2a\u5e38\u91cf\uff0c\u4e0d\u80fd\u5bf9\u5b83\u6307\u5411\u7684\u5185\u5b58\u533a\u57df\u8d4b\u503c\u3002
\u7c7b\u4f3c\u4e0b\u9762\u7684\u4ee3\u7801\uff1a
char* p = "hello"; p[0] = 'c';\u662f\u540c\u6837\u7684\u9519\u8bef\u3002

分析:
void copy_string(char *from, char *to); 这里可以看出参数1是源(数据提供者),参数2是目标(数据接收者)
copy_string(t,b);//从这句,可以看出,t是源,b是接收者
char *t=a;//这里,说明源是a数组
char *b="you are a student.";//这里看出,b是指针,指向一个常量串,(系统知识:常量字符串保存在系统的内存中不可修改区域,称之为静态区,只能读数据,不能向其中写数据)

因此,你的程序会出问题。


char *b="you are a student.";//有改动

*b指向的内存区是常量区,不允许进行写操作

char b[]="you are a student.";

原来的b[]位于栈区,可以进行写操作

原来的程序也有bug,看起来正常运行,实际上数组越界了

扩展阅读:c语言必背100代码 ... c语言 字符串截取 ... c语言字符长度怎么看 ... strcmp怎么比较字符串大小 ... 截取字符串的三种方法 ... c语言字符串怎么表示 ... c语言字符串相加函数 ... c 输入字符串 ... c#截取字符串中的一部分 ...

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