Linux C linux C實現trim功能

2021-08-23 12:09:27 字數 2580 閱讀 4225

linux c中沒有提供trim功能的api。

實際程式設計過程中,很多地方會使用到類似trim功能的地方。

比如: 從檔案中讀取一行資料,存到字串中。

但從檔案讀取的資料的末尾會包含 「\r\n」(windows檔案格式)或者「\n」(linux 檔案格式)

或者讀取的資料前面會有空格和\t

但往往我們所關心的資料並不包含這些\r或者\n的字串。

下面是自己編寫的乙個trim函式。

實現如下功能:

1.  提供三種模式

1.1 只從字串首開始檢測並刪除指定字元

1.2 只從字串尾部開始檢測並刪除指定字元

1.3 同時從字串首部和尾部檢測並刪除指定字元

2.  可以自己指定所要trim的字元,可以指定多個字元

1. 函式原型如下所示:

void trim(char *source_string, const char *trim_string, trim_direction_mode_t trim_mode)

其中:引數 source_string是需要進行trim操作的原始字串

引數 trim_string是指定的需要在原始字串中trim的字元

引數 trim_mode是指定trim的模式

其中 trim_direction_mode_t是自己定義的trim的模式的列舉,code如下:

enum _trim_direction_mode

;

typedef enum _trim_direction_mode trim_direction_mode_t;

顧名思義,定義了4種模式:

e_trim_mode_none <-- 不進行trim操作

e_trim_mode_front <-- 只對原始字串的行首進行trim操作

e_trim_mode_back <-- 只對原始字串的行尾進行trim操作

e_trim_mode_all<-- 對原始字串既進行行首操作也進行行尾操作

2. trim函式code如下:

static void trim(char *source_string, const char *trim_string, trim_direction_mode_t trim_mode)

if(j == (trim_string_len - 1))

}

if(escape_flag)

}

memmove(input_value_ptr, input_value_ptr+i,(input_len - i + 1));

}

if((trim_mode & e_trim_mode_back) != 0)

if(j == (trim_string_len - 1))

}

if(escape_flag)

}

input_value_ptr[i+1] = '\0';

}

return;

}

函式作用就是按照trim mode,從trim_string中選取要trim的字元,對source_string進行trim操作。

其中,true和false是自己定義的boo變數

#ifndef bool

#define bool int

#define true 1

#define false 0

#endif

**執行示例:

int main(int argc, char *argv)

執行結果如下:

source string is : abcdefghijklmn

trim front string is : cdefghijklmn

source string is : abcdefghijklmn

trim back string is : abcdefghijkl

source string is : abcdefghijklmn

trim front and back string is : cdefghijkl

python實現excel內容逐行寫入txt

最近在做文字分類,拿到的資料很亂。要做下一步,不管是分詞還是tfidf都要先做資料的分類。3萬篇文章,在乙個excel中,每行有每篇文章的id 內容 title content 分類 relative breeds 共三列 按分類建立子目錄,文章按分類放入子目錄中,每篇文章寫入乙個txt檔案,txt...

T9輸入法的實現

t9輸入法,名字聽起來陌生,可是大家卻經常使用它。可以說t9輸入法是輸入法歷史中的一次革命。至少自t9輸入法開始,輸入法有長足的進步。如圖手機中九個數字鍵。26個英文本母被分配到2至9這8個數字鍵上。以前想輸入英文單詞的時候總是需要連續多次按某個鍵,才能得到目標字母。比如想輸入 hello 就需要按...

T139631 T3 階乘之和

給定乙個非負整數 n,請你判斷 n 是否可以由一些非負整數的階乘相加得到。有若干組資料。每行乙個整數 n,保證 n 1000000。以負數結束輸入。對於每組資料輸出一行,若可以則輸出 yes 否則輸出 no 輸入 1複製 9 1 輸出 1複製 yes7 20 校內測模擬t3 差點就離 l 開 k i...