c语言函数字符串首尾互换,C语言字符串工具箱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

#include

#include

char *str_trim(const char *str)

{

size_t

i = 0,

j = strlen(str),

k = 0,

new_lenth;

while(isspace(str[i])){

++i;

}

if(i == j) return "";

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

new_lenth = j - i + 1;

char *result =(char *)

malloc(new_lenth + 1);

while(k < new_lenth){

result[k++] = str[i++];

}

result[k] = ' ';

returnresult;

}

@Source File  for Testing Named "main.c"

Contents of File "main.c"

Are as follows:

#include "string_toolbox.h"

#include

#include

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

intmain()

{

char

*str1 = "1",

*str3 = "3",

*str2[4] = {

" t 2t2 n v t ", // 12  23

" t 22 n v t ", // 1223

" t 2 n v t ", // 123

" t n v t " // 13

};

inti = 0;

while(i < 4){

chardest_buf[8] = {' '};

printf("%sn",

STR_CAT3(dest_buf,

str1,

str_trim(*(str2+i)),

str3)

);

++i;

}

printf("%dn", isspace(' ')); // 0

return0;

}

Postscripts

(1)size_tis type_alias of "unsigned int".

(2)Function void *malloc(size_t n_bytes); is declared in .

It is used to dynamically allocate memory.

(3) Functionsize_tstrlen(const char *str);is declared in.

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

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

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

(5)Function intisspace(intc); is declared in .

It checks whether c is a white-space character.For the "C" locale, white-space characters are any of :

' '

(0x20)

space (SPC)

't'

(0x09)

horizontal tab (TAB)

'n'

(0x0a)

newline (LF)

'v'

(0x0b)

vertical tab (VT)

'f'

(0x0c)

feed (FF)

'r'

(0x0d)

carriage return (CR)

(5)Details of Indexed Comments (Like @Comment_N) Above

原字符串全部可访问的下标范围为闭区间[0, strlen(str)];

printf("%dn", isspace(' '));会输出0, 即' '不被作为空白字符;

满是空白字符,精简后即是空字符串咯;

因为isspace(' ')为假, 因此应直接从' '的前一个字符开始检测空白;

精简后得到的新字符串全部可访问的下标范围为闭区间[0, new_lenth];

Copyright NOT Fully Reserved © yawenunion@whatever.com On 20180403

内容来源于网络如有侵权请私信删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值