删除字符串空格 C语言实现

今天上午遇到了个面试模拟题,不是很难,经常能看到这样相同或相似的题,但是突然想不到很好的办法,晚上整理下思路,写了下来

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

//删除字符串首部和尾部的空格,中间的有超过一个的空格的话就换成一个空格
//例子:“  hsf g   dfgg ”,"hsf g dfgg"
//"   ",""
//思路:先把首部和尾部的空格找到,在循环中就不循环它们(前两个while循环做的事),

char* Trim(char* lpstr)
{
    int len=strlen(lpstr);
    char *s=(char *)malloc(sizeof(char)*len+1);
    strcpy(s,lpstr);
    int start=0,end=len-1,i=0,j=0,num=0;//num代表空格出现的次数,j和i分别为数组s的两个下表索引,j从0开始,最后得到删除空格的新的数组,i从start开始,将i对应的字符加入到j里面,i始终大于等于j
    while(s[start]==‘ ‘)
    {    
        start++;
    }
    while(s[end]==‘ ‘)
    {
        end--;
    }
    for(i=start;i<=end;i++)
    {
        if(s[i]!=‘ ‘)
        {
            if(num>0) //代表在这个字符之前出现过空格,所以要增加一个空格,处理完之后num就清0
            {
                s[j++]=‘ ‘;
                num=0;
            }
            s[j]=s[i];
            j++;
        }
        if(s[i]==‘ ‘)
        {
            num++;
            //flag=1;
        }
    }
    s[j]=‘\0‘;//最后j位置上加上‘\0‘,代表数组在这里结束
    return s;
}

int main()
{
    char *ssss="  fgj fds f  ds ";
    printf("%s",Trim(ssss));

}

望大家批评指正

时间: 2025-01-03 21:22:10

删除字符串空格 C语言实现的相关文章

删除字符串空格

字符串常量不可更改 #include <iostream> #include <cstdlib> #include <cstring> using namespace std; void deleteStr(char * str) { int nSpaceNum = 0; char *p = str; char *q = str; char *s = str; while(*s != '\0') { if(*s == ' ') { nSpaceNum++; q++; }

程序设计-----字符串中删除连续空格,只保留一个空格 数中删除连续相同的数,只保留一个数

一.问题描述 输入一个字符串,注意是可以带空格的,我们所要做的是如果字符之间有很多个连续的空格,我们只需要保留一个空格,并输出显示. 有一个类似的问题,是将一个数中连续相同的数删除掉,只保留其中一个数,如3456667,转化为34567.这个问题与字符串的问题大体上是一致的, 只是字符串限定了只有连续的空格需要处理,连续的其他字符是可以接受的,如abbbc是满足条件的,而a    bbb     ccc则要转换为a bbb ccc. 二.问题分析 在书写程序的过程中,首先的思路是以空间换取时间,

删除字符串中多余的空格

作者 : 卿笃军 今天遇到的一道笔试题,后来百度 了一下,原来是一道新浪的面试题. 题目大意是这样:给你一个任意字符串,要求你删除字符串中多余的空格. 示例:('_'表示空格) 1)"12__abc_98_"     ==> "12_abc_98" 2)"______65_21__54__3_89___"  ==>  "65_21_54_3_89" 思路:设2个下标i,pos一个用于遍历字符串(i),另外一个用于指

删除字符串首位空格

//删除首尾空格 var pattern = /^\s+/; //强制首 var str = ' goo gle '; var result = str.replace(pattern, ''); pattern = /\s+$/; //强制尾 result = result.replace(pattern, ''); alert('|' + result + '|'); 类似于$.trim(str)方法

算法分析---删除字符串中出现次数最少的字符

编写一个函数,删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除.输出删除这些单词后的字符串.字符串中其他字符保持原来的顺序. 格式说明: 字符串仅仅包括字母.不可能为空串,不包括空格,单词仅仅由小写英文字母组成.输入的字符串长度不会超过20个char . 算法思路: (1)定义一个长度为26的整型数组 下标从0-25分别表示a-z这26个小写字母,用来保存字符串中各个字符出现的次数 (由于'a'-'a'=0,'z'-'a'=25刚好与数组的下标相应) "abcdddeeffffx

source insight 保存时删除多余空格,去除多余空格 space tab键

source insight 保存时删除多余空格,去除多余空格 space tab键 摘自:https://blog.csdn.net/lanmanck/article/details/8638391 2013年03月05日 15:57:28 lanmanck 阅读数:16527更多 个人分类: 嵌入式/Linux/C语言 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lanmanck/article/details/8638391 上传源码时

js去除字符串空格(空白符)

 1. replace正则匹配方法 去除字符串内所有的空格:str = str.replace(/\s*/g,""); 去除字符串内两头的空格:str = str.replace(/^\s*|\s*$/g,""); 去除字符串内左侧的空格:str = str.replace(/^\s*/,""); 去除字符串内右侧的空格:str = str.replace(/(\s*$)/g,""); 2 .str.trim()方法 trim

删除字符串头部的空白字符

#include <stdio.h> #include <string.h> //删除字符串头部的空白字符. int main() { char code[]=" hello World"; // int len=sizeof(code); char buf[16]; int count=0; int i=0; for(i=0;i<len;i++) { if(code[i]==' ') { continue; } else { for(int j=i;j&

linux删除指定行&amp;删除行首空格&amp;替换字符

打印并删除2~1000行 nl /etc/passwd | sed '2,1000d' |more 删除行首空格 sed 's/^[][ ]*//g' file 替换分隔符 说明:文件中数据是由一个或者制表位(多个空格)分隔开的,将这些空格替换为特定字符. 解决方法:sed -e 's/[ ][ ]*/,/g' filename 或者:sed -e 's/[[:space:]][[:space:]]*/ /g' filename 这样将空格或者制表位替换为“逗号”了.