c語言處理字串, 但不想編譯器給每個,字串後面都加「 0」符號,要自己做的話,要用什麼方式呢?

時間 2021-06-06 20:16:33

1樓:子謙

首先,C語言中,字串並不是自動加上'\0'字元的。

說明下字元陣列和字串:

字元陣列指的是有若干char型的元素組成的陣列,但是由於常用char型的陣列表達一些含義完整的自然語言,因此常把char型陣列看成乙個整體,為了方便對於這樣乙個整體的操作,在字元陣列初始化的時候,如果使用char *str = "hello"或者char str[100] = "hello"這一類帶有雙引號的形式,那麼就會預設含有乙個'\0' 在字元陣列的末尾,標記著這個字串的結束位置,在C語言通常把含有此結束符的字元陣列稱為字串。

如果你這樣編寫 char str[20] = ;那麼就不會存在字元『\0』此時str應該稱為字元陣列。

系統為了可以整體操作這一類含有結束符的特殊字元陣列,即字串,提供了乙個函式庫,他的標頭檔案是string.h,如果希望字串沒有結束符'\0',你可能需要的是:

無論字元陣列是否使用雙引號,都不含『\0』,那麼你可能需要重寫string的庫函式,修改雙引號會自動新增'\0'的特點,重寫運算子雙引號,但是似乎需要在c++才可以實現。或者:

2樓:

搞些建構函式以及字串處理函式就差不多吧,例如

typedef structmy_string_t;

my_string_t * my_string_new(const char *s)

#define my_string_len(str) (str)->len

#define my_string_delete(str) free(str)

#define my_string_at(str,n) (*(char*((str)+1)+n))

然後搞一堆諸如此類的:

my_string_new_from_int()

my_string_cpy()

my_string_cmp()

my_string_cat()

C語言字串如何賦值及輸出?

那個人 你這不是字串賦值,而是字串指標賦值。你定義的是乙個字串指標,指向的是字串常量的起始位址。字串定義 char buf LEN 賦值 strcpy buf,string 或sprintf buf,s string 先不用嘟嘟嘟,p abc 其他不變 首先執行時記憶體裡面會有乙個位置儲存 abc ...

C語言中的字串是如何儲存漢字的?

這東西應該和具體的環境有關。在VisualStudio預設情況下,是GBK編碼,兩個位元組存乙個漢字,因此如果引用不慎會造成亂碼。include intmain 輸出 c4 e3 ba c3 編碼 你 c4e3 好 bac3 printf s s 輸出 你好 注 程式正常操作 printf s s ...

C語言有指標字串,為什麼沒有指標數字?

虛實道長 我個人覺得這個跟計算機的架構,以及數字或者字元的編碼有關。計算機如果暫存器是32位的,當然可以直接支援32位的數字 整數或者浮點數 但是字元,本質上也是 數字的形式 儲存,那麼顯然的問題就是 如何把abcd26個英文本元和常用字元用什麼數字儲存?單個字元可以轉化為32位數字,而字串不能夠。...