您好,登錄后才能下訂單哦!
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才是正確的。
returns;
}
/*****************************************************************************
函數名 : 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);
}
voidmain(void)
{
charstr[1000]={" adf asdfasldf jjjjjjjjj iiii "};
charstr1[1000]={" adf asdfasldf jjjjjjjjj iiii "};
puts("Start main.");
printf("%s\n",strtrimc(str));
printf("%s\n",strtrim(str1));
}
運行結果
<img src="https://pic1.zhimg.com/v2-8a63cf946682cfbd00b713f82b4c0ab4_b.jpg" data-caption="" data-size="normal" data-rawwidth="517" data-rawheight="86" class="origin_image zh-lightbox-thumb" width="517" data-original="https://pic1.zhimg.com/v2-8a63cf946682cfbd00b713f82b4c0ab4_r.jpg">
注意問題
1 常量區
剛開始的時候,我寫的是char * s = "adfasdfasdfsf adfasdf adfasdfad ";
然后出現段錯誤,這里定義的s,保存在的是常量區,所以不能做賦值等操作,大家對字符串操作的時候要特別注意。
2 指針的返回值問題
<img src="https://pic2.zhimg.com/v2-a0a20ac82107e53ed414d00f8bf849d1_b.jpg" data-caption="" data-size="normal" data-rawwidth="765" data-rawheight="451" class="origin_image zh-lightbox-thumb" width="765" data-original="https://pic2.zhimg.com/v2-a0a20ac82107e53ed414d00f8bf849d1_r.jpg">
原來我返回的是p1 ,p1 p2 s原來是相等的,但是經過一系列運算后,他們的值已經不相等了,他們的值如上面顯示那樣,所以返回值一直要返回s。
關于C語言 中怎么刪除字符串空白符問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。