读书人

一个c程序有关问题

发布时间: 2012-04-18 15:01:59 作者: rapoo

一个c程序问题
void main()
{
int num=0;
int i;
char src[]= "ABCD1234efgh ";
int len=sizeof(src);
char arr[55];
char *des=arr;
for(i=0;i <len;i++)
*des++=src[len-i-1];
*des++= '\0 ';

printf( "%s\n ",des-len);//注意这句话
getch();
}

上面程序是个逆序程序,我的问题是printf( "%s\n ",des=des-len);//注意这句话
这条语句改为printf( "%s\n ",arr)就输出没有任何东西,arr不就是指向des首地址的吗????

[解决办法]
void main()
{
int num=0;
int i;
char src[]= "ABCD1234efgh ";
int len=sizeof(src);//len==13!!注意!!
char arr[55];
char *des=arr;
for(i=0;i <len;i++)
*des++=src[len-i-1];//arr[0]==*des==src[len-1]== '\0 ';注意这个,!!
*des++= '\0 ';//des==arr+len+1

printf( "%s\n ",des-len);//这样是从arr[1]开始输出,
//printf( "%s\n ",arr);//从arr[55]的第一个元素开始输出,但第一个元素是 '\0 ',
//因为字符串一遇到 '\0 '就结束,所以就输出没有任何东西
getch();
}

读书人网 >C语言

热点推荐