c++关于删除空格

版权声明:【本文为博主原创,未经博主允许不得转载】 

实验题,需要做的函数为

输入一个字符串,删除字符串中的所有空格,输出删除空格后字符串的长度,需编写以下功能函数:

1、编写函数void input(char *str),函数的功能是输入一个字符串

2、编写函数void trim(char *str),函数的功能是从一个字符串中删除所有的空格。

3、编写函数 void length(char *str,int *l),利用指针l返回字符串的长度。

主函数为

1、编写主函数main测试上述函数,代码如下:

void main()

{

char str[100];

int l;

input(str);

trim(str);

cout<<"The string after triming is "<<str<<endl;

length(str,&l);

cout<<"The length of the string is "<<l<<endl;

}

2、期望的运行结果如下:

 

 


需要分别实现这些函数。于是轻易写出input与length2个函数分别为

void input(char *str)
{
char *a;
a = str;
// scanf("%s",a);


cout<<"Please input a string:";
cin>>a;

}

void length(char *str,int *l)
{
*l=strlen(str);
/* printf("strlen(str)=%d\n",*l);*/

}

于是在博客中找了众多的删除空格算法成功是这个函数:

void trim(char *str)  
{  
    int len,k,i;  
    if (str == NULL)  
        return;  
    len = strlen(str);  
    k = 0;  
    for (i=0; i<len; i++)  
    {  
        if ((str[i] != ' ')&&(str[i] != '\n'))  
        {  
           str[k]=str[i];  
           k++;  
        }  
    }  
    str[k]='\0';  
    return;  

但是关于基础的小细节在这边卡了很多天。

如下运行结果发现只有节制前一段字符串后面的自动获取失败。最后无意间发现一篇博客里面的注释

/* cout<<endl;如果用scanf来接收字符串的话,
字符串中不能含有空格,否则将以空格作为串的结束符。
如果你键入得是hello world 那么实际上scanf只能获取
hello 这个单词。所以要接收空格的话可以用gets()
这个函数。gets(str)是读入一串以回车结束的字符,
顺序存入到以str为首地址的内存单元中,最后写入字符

串结束标志 “\0 */

才找对了方向并不是算法错误 而是输入函数的错误、将cin>>a;改为gets(str); 

终于实现功能结果。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值