读书人

大人门小弟我这个代码那错了

发布时间: 2012-03-12 12:45:33 作者: rapoo

各位高手大人门,我这个代码那错了?
感觉就是下面这句有问题,不知道怎么改啊,题目就是1,2,3个数组用指针先后把1,2数组分别附给3
g=&c[j];
for(i=0;i <5;i++)
{
*g=*f;
g++;
f++;

}

---------------------------------------


#include <stdio.h>
#include <string.h>
void main()
{
char a[5]={ 'H ', 'e ', 'l ', 'l ', 'o '},b[5]={ 'W ', 'o ', 'r ', 'l ', 'd '},c[10];
char *e,*f,*g,i;
int j;
e=a;
f=b;
g=c;
for(i=0;i <5;i++)
{
*g=*e;
g++;
e++;

}
j=strlen(c);

g=&c[j];
for(i=0;i <5;i++)
{
*g=*f;
g++;
f++;

}
for(i=0;i <10;i++)
{
printf( "%c ",c[i]);

}
printf( "\n ");

}

[解决办法]
c要初始化,否则不知 j=strlen(c);会是多少
[解决办法]
j=strlen(c);
strlen是对字符窜或字符窜数组求长度,并且字符窜或字符窜数组必须一 '\0 '结尾。不然会产生错误。
[解决办法]
1、把C[10]={0};代码就对了
2、程序中定义了太多的重复指针变量,直接在循环中用a[i]代替指针
3、数组的最好留个空余放 '\0 '
[解决办法]
去掉 j=strlen(c);g=&c[j];两句,另外纠正楼主个错误,楼主是想利用strlen(c)得到已考字符的长度,但strlen()是字符串操作的函数,得到的结果不一定是5。。。。我想楼主知道字符串的格式吧?

读书人网 >C++

热点推荐