格式输出疑问
某字符数组中的字符从小到大排列,下列代码实现在数组中插入一个字符,使数组中的字符依然从小到大排列,注意:原字符串字符并没减少.
#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 '依然在字符串的最后面!
所以输出字符串时仍然正确!