How do I trim leading/trailing whitespace in a standard way?
来源:互联网 发布:计算复杂性 口头算法 编辑:程序博客网 时间:2024/06/07 09:41
http://stackoverflow.com/questions/122616/how-do-i-trim-leading-trailing-whitespace-in-a-standard-way
关于去除字符串的頭尾的空格键(思路可以扩展到其他的符号)。
分为两种情况,
1. 第一种为可以对此字符串改变的,如字符数组,堆中(calloc和malloc)分配的空间,还有一些buffer(TCP传过来的,不过也是通过以上方法来放的,只是感觉分一下,呵呵)。
char *trimwhitespace(char *str){ char *end; // Trim leading space while(isspace(*str)) str++; if(*str == '\0') // All spaces? return str; // Trim trailing space end = str + strlen(str) - 1; while(end > str && isspace(*end)) end--; // Write new null terminator *(end+1) = '\0'; return str;}
char *trimwhitespace(char *str){ char *end; // Trim leading space while(isspace(*str)) str++; if(*str == '\0') // All spaces? return str; // Trim trailing space end = str + strlen(str) - 1; while(end > str && isspace(*end)) end--; // Write new null terminator *(end+1) = '\0'; return str;}size_t trimwhitespace(char *out, size_t len, const char *str){ if(len == 0) return 0; const char *end; size_t out_size; // Trim leading space while(isspace(*str)) str++; if(*str == '\0') // All spaces? { *out = '\0'; return 1; } // Trim trailing space end = str + strlen(str) - 1; while(end > str && isspace(*end)) end--; end++; // Set output size to minimum of trimmed string length and buffer size minus 1 out_size = (end - str) < len-1 ? (end - str) : len-1; // Copy trimmed string and add null terminator memcpy(out, str, out_size); out[out_size] = '\0'; return out_size;}
后记:经过测试,木有发现bug状况,逻辑比较简单,先对传入的字符串进行判断,看看是不是空或者纯空格符,然后消除头和尾,再传出来。
看老外的讨论,对第一个有疑义,就是假如你传入的是动态生成的,那么你需要自己在main函数(假设在main里面调用)自己free掉,不然内存泄漏了~~~当然数组无所谓了~~~
恩,最好在注释里面说明下~~~
ps:大家看看有没有bug~~~
- How do I trim leading/trailing whitespace in a standard way?
- "Your package contains a file with a name that contains leading or trailing whitespace"解决方法
- How do I register a custom filetype in iOS【链接】
- How do I run a 64-bit guest in VirtualBox?
- How do I instantiate a Queue object in java?
- How Do I Declare A Block in Objective-C?
- How Do I Declare A Block in Objective-C?
- How Do I Declare A Block in Objective-C? [备忘]
- How Do I Declare a Closure in Swift?
- How do I hide a menu item in the actionbar?
- How Do I Declare A Block in Objective-C?
- How do I deploy a Flask application in IIS?
- How do I read in a character variable with varying length in a space delimited dataset?
- How do I read in a character variable with varying length in a space delimited dataset?
- Shell script - How can I trim white space from a variable in awk?
- How do I install a file in my local repository along with a generic POM?
- How do I debug JavaScript in Safari?
- How do I use Cygwin in Geophysics ?
- 在 Android 中调用二进制可执行程序(native executable )
- block 和 inline 的区别是什么
- OOAD之设计模式-行为模式
- [疯狂Java讲义精粹] 第九章|Annotation(注释)
- sql教程
- How do I trim leading/trailing whitespace in a standard way?
- 【Android】Android图形之Animate
- hdu 1728 逃离迷宫 BFS
- hash_map 与 hash_set 详解
- 从30岁至35岁:为你的生命多积累一些厚度
- jQuery属性过滤选择器
- Bad Hair Day
- 黑马程序员 java中的位运算总结
- 黑马程序员_java银行业务调度系统的分析、设计、实现