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

一、问题描述:

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

二、举例说明:

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

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


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



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


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


三、代码实现:

#include
#include
#include
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

你可能感兴趣的:(C,语言,C++,对字符串的操作)