请C语言大神帮帮忙初学者看不懂自定义函数里怎么进行字符串连接的?

请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后面那个分好

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网