关于链接2个字符串的问题。。。。
#include "stdio.h"aaa(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';
}
main()
{char s1[10],s2[10],s[10];
printf("\n s1 \n");
scanf("%s",s1);
printf("\n s2 \n");
scanf("%s",s2);
aaa(s1,s2,s);
printf("new ssss: %s \n",s);}
程序没有问题。。。。。但是这段
str[i+j]=str2[j];
str[i+j]='\0';
我这里不是很懂。。。。。。为什么是str[i+j]=str2[j],比如。。。。。当str1和str2都只输入1个比如str1只输入1,str2只输入2,那么str1[0]==1,str2[0]=2,那么str[0+0]=str[0]........这个怎么回事。。。。。。。。。。为什么还会正常输出。。。。。
请高手解答
----------------解决方案--------------------------------------------------------
strcat()
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]sunkaidong[/un] 在 2008-3-11 21:47 的发言:[/bo]
strcat()
strcat()
我的不是用这个strcat()。。。。。程序可以运行的。。也正确。。。。。。。我就是不知道为什么那段要那样子写的。。。。。
----------------解决方案--------------------------------------------------------
str[i+j]=str2[j],我是这么理解的:
由于是for循环,而且是i++或j++,它们循环一次之后,已经增值,比如说您在数组中输入一个字符,然后在for中,它赋值给str[i]相当于str[0],然后i增1,i值为1。所以,当str[i+j]时,也就相当于str[1+0],然后再把str[1+1]赋值为'\0'。所以程序中没有错误。
希望我解释得正确,也希望您能看懂。如有不对的地方,还请各位指正一二,偶也趁机学习学习,谢谢。
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]广陵绝唱[/un] 在 2008-3-11 22:10 的发言:[/bo]
str=str2[j],我是这么理解的:
由于是for循环,而且是i++或j++,它们循环一次之后,已经增值,比如说您在数组中输入一个字符,然后在for中,它赋值给str相当于str[0],然后i增1,i值为1。所以,当str时,也就相当于str[1+0],然后再把s ...
str=str2[j],我是这么理解的:
由于是for循环,而且是i++或j++,它们循环一次之后,已经增值,比如说您在数组中输入一个字符,然后在for中,它赋值给str相当于str[0],然后i增1,i值为1。所以,当str时,也就相当于str[1+0],然后再把s ...
有道理= =。。。。。。明白了。。感谢
----------------解决方案--------------------------------------------------------