为什么同样是判断条件,结果却不相同
											
程序代码:#include<stdio.h>
int main()
{
    char buf[]="                312313131";
//    puts(buf);
    int count = 0;
    for(int i=0;buf[i];i++) //判断空格数
    {
        if(buf[i] == ' ')
            count += 1;
    }
    printf("%d\n",count);
int q = 0;
    for(q=count;buf[q];q++) //删除空格
    {
        buf[q-count]=buf[q];
        /*if(buf[q] == 0) // 结束符
        {
            break;
        }    */
    }
    printf("\nq=%d\n",q);
    printf("%s",buf);
    return 0 ;
}
这个是楼主写的代码,然后发现了问题。 在 删除空格的函数里面
程序代码:    for(q=count;buf[q];q++) //删除空格
    {
        buf[q-count]=buf[q];
        
    }  这个结果是错误的, 我不知道为什么
程序代码:    for(q=count;;q++) //删除空格
    {
        buf[q-count]=buf[q];
        if(buf[q] == 0) // 结束符
        {
            break;
        }    
    }  这个是正确的  我感觉这两个判断条件是一样的啊? 为什么第一个会出错呢



											
	    

	

