字符串中包含字符串結(jié)束符0怎么去掉?
首先,C語言中,字符串并不是自動加上'\0'字符的。
說明下字符數(shù)組和字符串:
字符數(shù)組指的是有若干char型的元素組成的數(shù)組,但是由于常用char型的數(shù)組表達(dá)一些含義完整的自然語言,因此常把char型數(shù)組看成一個(gè)整體,為了方便對于這樣一個(gè)整體的操作,在字符數(shù)組初始化的時(shí)候,如果使用char *str = "hello"或者char str[100] = "hello"這一類帶有雙引號的形式,那么就會默認(rèn)含有一個(gè)'\0' 在字符數(shù)組的末尾,標(biāo)記著這個(gè)字符串的結(jié)束位置,在C語言通常把含有此結(jié)束符的字符數(shù)組稱為字符串。
如果你這樣編寫 char str[20] = {'H','e','l','l','o'};那么就不會存在字符‘\0’此時(shí)str應(yīng)該稱為字符數(shù)組。
系統(tǒng)為了可以整體操作這一類含有結(jié)束符的特殊字符數(shù)組,即字符串,提供了一個(gè)函數(shù)庫,他的頭文件是string.h,如果希望字符串沒有結(jié)束符'\0',你可能需要的是:
無論字符數(shù)組是否使用雙引號,都不含‘\0’,那么你可能需要重寫string的庫函數(shù),修改雙引號會自動添加'\0'的特點(diǎn),重寫運(yùn)算符雙引號,但是似乎需要在c++才可以實(shí)現(xiàn)。
或者:
只是不想自動添加‘\0’你只需要把字符數(shù)組按照普通數(shù)組的方式初始化就可以,見上面的例子,你也可以單獨(dú)編寫一個(gè)函數(shù),刪除最后的那個(gè)'\0',但是你這樣做的話,C語言提供的string函數(shù)也無法直接使用了,你仍然需要重新實(shí)現(xiàn)他們。