请C语言大神帮帮忙初学者看不懂自定义函数里怎么进行字符串连接的?#include<stdio.h> /*包含头文件*/
void _strcat(char str1[],char str2[])/*自定义strcat()函数*/
{
int i,j; /*定义控制变量*/
for(i=0;str1[i]!='\0';i++); /*字符数组1中循环*/
printf("%d",i);
for(j=0;str2[j]!='\0';j++) /*字符数组2中循环*/
printf("%d ",j);
str1[i+j]=str2[j]; /*字符串连接*/
str1[i+j]='\0'; /*结束*/
}
int main() /*主函数main*/
{
char str1[100],str2[100]; /*定义字符数组*/
printf("请输入字符串1:\n"); /*提示信息*/
gets(str1); /*输入字符串1*/
printf("请输入字符串2:\n"); /*提示信息*/
gets(str2); /*输入字符串2*/
_strcat(str1,str2); /*调用函数连接2个字符串*/
printf("连接之后的字符串是:%s\n",str1);/*显示连接后的字符串*/
return 0; /*程序结束*/
}
void _strcat(char str1[],char str2[])/*自定义strcat()函数*/
{
int i,j; /*定义控制变量*/
for(i=0;str1[i]!='\0';i++); /*字符数组1中循环*/
printf("%d",i);
for(j=0;str2[j]!='\0';j++) /*字符数组2中循环*/
printf("%d ",j);
str1[i+j]=str2[j]; /*字符串连接*/ 这里是直接赋值
str1[i+j]='\0'; /*结束*/ 这里也是直接赋值
}追问
这个是自定义的字符串连接函数
追答void _strcat(char str1[],char str2[])/*自定义strcat()函数*/
{
int i,j; /*定义控制变量*/
for(i=0;str1[i]!='\0';i++); /*字符数组1中循环*/
printf("%d",i);
for(j=0;str2[j]!='\0';j++) /*字符数组2中循环*/
str1[i+j]=str2[j]; /*字符串连接*/ 这样才是
str1[i+j]='\0'; /*结束*/ 这里也是直接赋值
}
我看不懂它赋值的过程
追答就是在str1的末尾加上str2的字符
追问这个我知道 我是搞不懂他的过程
追答for(j=0;str2[j]!='\0';j++) /*字符数组2中循环*/{
str1[i+j]=str2[j]; /*字符串连接*/ 这样才是
}
如: str1[100]="sgd";
str2[100]="kle";
str1[0]='s';
str1[1]='g';
str1[2]='d';
str1[3]='\0';
str2[0]='k';
str2[1]='l';
str2[2]='e';
str2[3]='\0';
上面的循环是
str1[3] = str2[0];//k
str1[4] = str2[1];//l
str1[5] = str2[2];//e
str1[6] = '\0';追问
嗯 是不是第一个 for循环是单独循环的 他没有控制第二个for循环
追答第一个for是为了找到str1的末尾也就是上面例子的str1[3]
追问嗯 谢谢你兄弟 我看懂了 我是没注意看第一个for后面那个分好