设为首页 加入收藏

TOP

C语言字符串工具箱DIY之剔除字符串首尾的空白字符的str_trim函数(一)
2018-10-21 16:09:47 】 浏览:86
Tags:语言 字符串 工具箱 DIY 剔除 首尾 空白 字符 str_trim 函数

@Header File Named "string_toolbox.h"

Contents of File "string_toolbox.h"  

Are as follows:

#ifndef STRING_TOOLBOX_H_INCLUDED

#define STRING_TOOLBOX_H_INCLUDED

char *str_trim(const char *str);

#endif

 

@Source File Named "string_toolbox.c"

Contents of File "string_toolbox.c"  

Are as follows:

#include "string_toolbox.h"

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

char *str_trim(const char *str)
{
    size_t

i = 0,

j = strlen(str),

k = 0,

new_lenth;

// @Comment_1 

    while(isspace(str[i])){

      // @Comment_2

         ++i;
    }

   if(i == j) return "";

      // @Comment_3

    while(isspace(str[--j]));

      // @Comment_4

    new_lenth = j - i + 1;

      // @Comment_5

    char *result = (char *)

      malloc(new_lenth + 1);

    while(k < new_lenth){
         result[k++] = str[i++];
    }
    result[k] = '\0';


    return result;
}

 

@Source File  for Testing Named "main.c"

Contents of File "main.c"  

Are as follows:

 

#include "string_toolbox.h"
#include <ctype.h>
#include <string.h>

#define STR_CAT3(d, s1, s2, s3) (strcat(strcat(strcat(d, s1), s2), s3))

int main()
{
    char
        *str1 = "1",
        *str3 = "3",
        *str2[4] = {
         " \t 2\t2 \n \v \t ", // 12  23
         " \t 22 \n \v \t ", // 1223
         " \t 2 \n \v \t ", // 123
         " \t \n \v \t " // 13
        };

    int i = 0;
    while(i < 4){
        char dest_buf[8] = {'\0'};
        printf("%s\n",

      STR_CAT3(dest_buf,

      str1,

      str_trim(*(str2+i)),

      str3)

     );
        ++i;
    } 

    printf("%d\n", isspace('\0')); // 0

 

    return 0;
}

 

Postscripts

(1) size_t is type_alias of "unsigned int".

(2) Function void *malloc(size_t n_bytes); is declared in <stdlib.h>.

  It is used to dynamically allocate memory.

(3) Function size_t strlen(const char *str); is declared in <string.h>.

  It counts how many valid charaters (that is the amount of charaters before '\0') are in this string.

(4) Function char *strcat(char *destination_string_buf, const char *source_string); is  declared in <string.h>.

  It appends the source_string to the ending of the destination_string_buf on '\0'. The destination_string_buf should contain a C string, and be large enough to contain the concatenated resulting string.

(5) Function int isspace(int

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇二维数组 下一篇使用递归倒序输出字符串

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目