C语言(不用函数和指针)整理字符串 将字符串的前导和后随空白符删除 并将字符串中多个空白符只保留一个

C语言题目(不能用函数和指针,我们才学到数组这一章):整理字符串将字符串的前导空白符和后随空白符删除并将字符串中非空白字符串之间的连续的多个空白符只保留一个而去掉多余的空... C语言题目(不能用函数和指针,我们才学到数组这一章):整理字符串 将字符串的前导空白符和后随空白符删除 并将字符串中非空白字符串之间的连续的多个空白符只保留一个 而去掉多余的空白符.
比如 输入 i am a boy
变成 i am a boy.
大神们救救我吧!~ 好的话可以追加分
展开
 我来答
龍不悔
2013-11-05 · TA获得超过1139个赞
知道小有建树答主
回答量:271
采纳率:0%
帮助的人:498万
展开全部

我用了最原始的方法,你看一下可能看懂,呵呵。

#include<stdio.h>
int main()
{
    int index=0,fi=0;
    char str[100];
    gets(str);//输入字符串 
    
    while(str[index] == ' ')//去除首空格 
    {
                       fi = index;
                       while(str[fi]!='\0')//移动后面的字符串覆盖空格 
                       { 
                                           str[fi] = str[fi+1];
                                           fi++; 
                       } 
    }
        
    while(str[index] != '\0')//去除中间多余空格 
    {
                       if(str[index]==' '&&str[index-1]==' ')
                       {
                               fi = index;
                               while(str[fi]!='\0')
                               { 
                                                   str[fi] = str[fi+1];
                                                   fi++; 
                               } 
                               index--;
                       }
                           
                       index++;
    }
    
    if(str[index-1] == ' ')//去除句末空格 
                    str[index-1] ='\0';
    
    puts(str);
    getch();
    return 0;
}
追问
getch();  这个是什么东西???VS2010不能识别 不过我删了也可以用的
追答
删了就可以了,是我的编译器自带的,
路易五十三
2013-11-05 · 超过15用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:44.1万
展开全部
#include "stdio.h"
#include "string.h"
int main(int argc,char* argv[])
{
char szS[100] = {0};
char szD[100] = {0};
int nD = 0;
scanf("%[0-9a-zA-Z ]s",szS);
for (int i=0;i<strlen(szS);i++)
{
if (' '!=szS[i]||(' '!=szS[i+1] && 0!=szS[i+1]))
{
szD[nD++] = szS[i];
}
}
if (' '==szD[0])
{
for (i=0;i<nD-1;i++)
{
szD[i] = szD[i+1];
}
szD[nD-1] = 0;
nD--;
}
if (' ' == szD[nD-1])
{
szD[nD-1] = 0;
}
printf("%s\n",szD);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暗流L
2013-11-05 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:51.2万
展开全部
#include<stdio.h>
void main()
{
    char c[30]="      i    am   a   boy     ";
    int base=-1;
    int index=0;
    int space_flag=0;
    while(c[index]!='\0')
    {
    if(c[index]==' ')
    {
    if(base==-1)
    {
    space_flag=0;
    }    
    else
    {
    space_flag=1;
    }
    }
    else
    {
    base++;
    if(space_flag==1)
    {
    c[base]=' ';
    base++;
    }
    c[base]=c[index];
    space_flag=0;
    }    
    index++;
    }
    base++;
    c[base]='\0';
    printf("%s",c);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式