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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++和C代码:删除字符串中所有前导空格和所有后导空格,单词之间最多只留一个空格
string remove_blank_in_str(string str) { string result; size_t length = str.size(); size_t begin = 0; while(str[begin]==' '){ begin++; } wh
删除前导空格和后继空格的C语言函数
#include/*删除前导空格的函数*/void headspace(char* s){ int i,j; for(i=0;s[i]==32;i++); /*循环结束后的i值为前导空格的个数*/ if(i==0) return; for(j=i;s[j]!=/0;j++) s[j-i]=s[j]; s[j-i]=/0;}/*删除后继空格的函数*/void tailspace(
关于字符串前导*的移动/删除的几种情况
1、编写一个程序把所有字符串的前导*保留,其他的*号都删除效果:        ***shd***swbd*dwh  转换成  ***shdswbddwh 算法分析,先研究一个字符串char a[100]=&quot;***shd***swbd*dwh&quot;,b[100]=&quot;&quot;;int  i,j,k=0;puts(a);for(i=0;a[i];i++){    if(a[i]!='*') { break; ...
String固定起始位置字符串反转,去除前后或所有空格
练习字符串的反转 如何去除字符串前后空格 如何去除字符串所有空格 public class StringUtils { //去除前后空格方法 public static String DeleteBlankSpace(String s){ while(s.startsWith(" ")){ s=s.substring(1);
P,N,C型数据前导0及前导空格问题
去前导0 P会自动去掉前导0,   N类型的可以通过write no-zero方式.     C类型的可以通过函数  CONVERSION_EXIT_ALPHA_INPUT     或语法 SHIFT OBJ LEFT DELETING LEADING '0'.     加前导0 P类型的应转换为C后
去掉字符串前后的回车、换行、空格、制表等字符
<br />BOOL  AllTrim(char * pszSrcStr)    // 去掉字符串前后的回车、换行、空格、制表等字符<br /> {<br />     BOOL  bBoldTail = FALSE;<br />     int  nIndx = 0, nLen = 0;<br />     char  szTmpStr[MAX_PATH + 1], * pszToken = NULL, *ptrSrc = pszSrcStr;<br /><br />     if ( (NUL
C语言除去字符串前后的空格
 我觉得利用strtok很容易就实现了,以下是代码: #include#include#includeint main(void){char str[]="test hear good kill";char str1[]=" blak ";char *p;p=strtok(str1," ");if(p)printf("p = %sdd
ABAP 去空格
去掉字符串中所有空格  condense string no gaps 去掉字符串中左边或右边的空格:  SHIFT string LEFT DELETING LEADING SPACE.  SHIFT string right DELETING LEADING SPACE.
String字符串去掉头尾的空格
String.trim():返回字符串的副本,忽略前导空白和尾部空白。这个是把头尾字符都去掉
JAVA去掉一个字符串的前后空格
public static String mytrim(String str){ int start=0; int end=str.length()-1; while(str.charAt(start) ==' '){ start++; } while(str.charAt(end)==' '){ end--; } return str.substring(start,end+1