2 xyhqqlove xyhqqlove 于 2016.01.24 21:04 提问

去掉字符串的前导空格,这个程序哪里错了

#include
#include
void main()
{
char s[100];
scanf("%d", &s);
int p=0,i;
for(i=0;s[i];i++)
{
if(s[i]==' ')
p++;
else
break;
}
for(i=0;s[i];i++)
{
s[i]=s[i+p];
}

printf("%s",s);
}

3个回答

qq_27183003
qq_27183003   Ds   Rxr 2016.01.24 22:32
已采纳
 #include <stdio.h>
void main()
{
    char s[100];
    scanf("%s", s);//修改,输入格式不对
    int p=0,i;
    for(i=0;s[i];i++)
    {
        if(s[i]==' ')
            p++;
        else
            break;
    }
    for(i=p;s[i];i++)//修改
    {
        s[i-p]=s[i];//修改
    }
    s[i-p]=s[i];//修改
    printf("%s",s);
}
xyhqqlove
xyhqqlove 修改为gets就好了,谢谢大虾
接近 2 年之前 回复
91program
91program   Ds   Rxr 2016.01.24 21:30

有一个函数叫 trim,为什么不试试呢?

91program
91program   Ds   Rxr 2016.01.24 21:38

下面的代码,功能是有的。但需要注意代码中的注释!

void TestTrim(void)
{
    char s[100];
    int p=0,i;
    strcpy(s,"    abcdefg");
    for(i=0;s[i];i++)
    {
        if(s[i]==' ')
            p++;
        else
            break;
    }
    for(i=0;s[i];i++)
    {
        s[i]=s[i+p];        // i+p 容易产生越界
    }

    printf("%s",s);         // +        s   0x004fef8c "abcdefg"    char [100]
}
91program
91program 回复xyhqqlove: 我是自己在 VS2008 里验证过的,不是找来的
接近 2 年之前 回复
xyhqqlove
xyhqqlove 回复91program: 不要摆渡粘贴的
接近 2 年之前 回复
91program
91program 回复xyhqqlove: 你的代码,与我的代码唯一不同就是输入。我是赋值的,你是 scanf 来的字符串。其它没有什么不同!
接近 2 年之前 回复
xyhqqlove
xyhqqlove 我要知道我的程序为什么不对
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!