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