为什么这个程序无法将a数组中的字符串复制到b数组,然后输出呢?
本帖最后由 54黑科技 于 2019-10-31 15:19 编辑#include <stdio.h>
void main()
{
char a[] ="the boy is clever!",b;
int i;
for(i = 0;*(a + i) != '\n';i++)
{
*(b + i) = *(a + i);
}
*(b + i) = '\n';
printf("The string a is:%s\n",a);
printf("The string b is:");
for(i = 0;b != '\n';i++)
{
printf("%c",b);
}
}
本帖最后由 jackz007 于 2019-10-31 15:56 编辑
字符串 a[] 中根本就没有回车符 '\n',所以,for 循环会在下标越界以后的字符串外恰巧遇到一个回车符时,才会终止循环和字符串拷贝。
所以,你的代码必须这样修改:
#include <stdio.h>
void main()
{
char a[] ="the boy is clever!" , b ;
int i ;
for(i = 0 ; * (a + i) != '\0' ; i ++) * (b + i) = * (a + i) ;
* (b + i) = '\0' ;
printf("The string a is : %s\n" , a) ;
printf("The string b is : ") ;
for(i = 0 ; * (b + i)!= '\0'; i ++) printf("%c" , * (b + i)) ;
}
jackz007 发表于 2019-10-31 15:54
字符串 a[] 中根本就没有回车符 '\n',所以,for 循环会在下标越界以后的字符串外恰巧遇到一个回车符 ...
好的,谢谢您!
页:
[1]