C 实现 删除字符串空白符的函数 strtrim
生活随笔
收集整理的這篇文章主要介紹了
C 实现 删除字符串空白符的函数 strtrim
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說在前面的話
字符串操作在很多C語言比賽里面都有涉及,最近公眾號里面的C語言比賽,都是兩個關于字符串操作的題目,希望大家認真看題目。
直接上代碼
/*************************************************************************> File Name: trim.c> Author: > Mail: > Created Time: Mon 12 Nov 2018 10:16:04 AM CST************************************************************************/#include<stdio.h>/*****************************************************************************函 數 名 : strtrim功能描述 : 刪除行首、行尾空白符號輸入參數 : char *is 輸出參數 : 無返 回 值 : char *調用函數 : 被調函數 : 修改歷史 :1.日 期 : 2018年11月12日作 者 : strtrim修改內容 : 新生成函數*****************************************************************************/ char * strtrim(char *s) {char *p = s;char *q = s;//去掉行首的空格while (*p==' ' || *p=='\t') ++p;//賦值while ((p != NULL)&&(q != NULL)&&(*p != '\0')&&(*p != '\0')){*q++ = *p++;};//刪除'\0'字符 注意是 -2 上面q++是先操作再自加q -= 2;//去掉行末的空格while (*q==' ' || *q=='\t') --q;//給字符串添加字符結束標志*(q+1) ='\0';//這里的return s要注意看好//因為p q經過一系列操作后,已經不是原來的位置,越界了 ,s還在原來位置,所以return s才是正確的。return s; }/*****************************************************************************函 數 名 : strtrimc功能描述 : 刪除字符串空白符,包括行首和行尾輸入參數 : char * s輸出參數 : 無返 回 值 : char *調用函數 : 被調函數 : 修改歷史 :1.日 期 : 2018年11月12日作 者 : strtrim修改內容 : 新生成函數*****************************************************************************/ char * strtrimc( char * s ) {char * p1 = s;char * p2 = s;while(*p1 != '\0'){while(*p1 == ' ' || *p1 == '\t'){p1 ++;}* p2 ++ = *p1 ++;}*p2 = '\0';return (s); } void main(void) {char str[1000] = {" adf asdfasldf jjjjjjjjj iiii "};char str1[1000] = {" adf asdfasldf jjjjjjjjj iiii "};puts("Start main.");printf("%s\n",strtrimc(str));printf("%s\n",strtrim(str1)); }注意問題
1 常量區
剛開始的時候,我寫的是char * s = "adfasdfasdfsf adfasdf adfasdfad ";
然后出現段錯誤,這里定義的s,保存在的是常量區,所以不能做賦值等操作,大家對字符串操作的時候要特別注意。
2指針的返回值問題
原來我返回的是p1 ,p1 p2 s原來是相等的,但是經過一系列運算后,他們的值已經不相等了,他們的值如上面顯示那樣,所以返回值一直要返回s。
總結
以上是生活随笔為你收集整理的C 实现 删除字符串空白符的函数 strtrim的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Activiti 流程配置可视化:Spr
- 下一篇: 书中自有黄金屋~外加中奖结果通知