字符串中 去掉字符串前后空格以、'\t'(tab) C函数实现,附sscanf正则方式

16 篇文章 1 订阅

一、问题描述:

   当读取配置文件的时候,fgets()一行一行的读取文件后,sscanf()会对读取出来的这行字符串进行截取处理(此时sscanf()使用正则表达式处理字符串),但是当字符串的首位有空格或者‘\t’时候,后续字符串的比较时,会带来不必要的麻烦。

二、举例说明:

(提示:->表示开始  <-表示结尾  实际的配置文件中并不存在,只是为了更好的显示文件中有空格或者tab)

  配置文件如下所示,起始位置有空格与'\t':


程序中sscanf()并没有 在正则中处理首位空格 ‘\t’:



在后续的对比操作中会有不必要的麻烦。


因此在fgets()后面,sscanf()前 需要对读出的linebuffer进行首位去除空格 ‘\t’的处理。


三、代码实现:

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
void trim(char *strIn, char *strOut){

        int i, j ;

        i = 0;

        j = strlen(strIn) - 1;

        while(strIn[i] == ' ' || strIn[i] == '\t')
                ++i;

        while(strIn[j] == ' ' || strIn[j] == '\t')
                --j;
        strncpy(strOut, strIn + i , j - i + 1);
        strOut[j - i + 1] = '\0';
}
void main()
{
        char *strIn = "         this is a test string    ";
        char strOut[100];
        trim(strIn,strOut);
        printf("*%s*\n",strOut);
}

当然也可以考虑 用sscanf的正则表达式完成对字符串前后空格、tab的删除。链接如下:

      sscanf正则去掉字符串前后空格https://blog.csdn.net/weixin_42167759/article/details/80379430

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值