首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

格式输出疑问,该怎么解决

2012-03-06 
格式输出疑问某字符数组中的字符从小到大排列,下列代码实现在数组中插入一个字符,使数组中的字符依然从小

格式输出疑问
某字符数组中的字符从小到大排列,下列代码实现在数组中插入一个字符,使数组中的字符依然从小到大排列,注意:原字符串字符并没减少.
#include   "string.h "
void   fun(char   *w,char   x,int   *n)
{
int   i,p;
p=0;
w[*n]=x;
while(x> w[p])   p++;
for(i=*n;i> p;i--)   w[i]=w[i-1];
w[p]=x;
}
main()
{
                  char   w[]= "abcefghijk ";
                  int   a=strlen(w);
                  fun(w, 'd ',&a);
                  printf( "%s\n ",w);      
}
有一点不明,原数组经变动后,里面内容已不是字符串了,为什么仍能按%s格式输出?

[解决办法]
int a=strlen(w);
此处得出的w[]的长度是有效字符的长度,不包括最后的 '\0 ';
在子程序的操作中没有操作到 '\0 '所在的位置,也就是说 '\0 '依然在字符串的最后面!
所以输出字符串时仍然正确!

热点排行