c字串的初始化問題

2021-09-07 15:42:17 字數 444 閱讀 7889

c字串的初始化問題:

char *str = (char*)malloc(sizeof(char)*10);

for(int i = 0; i < 7; i++)

str[i]  = '#';

printf(「%s\n", str);

上面的**中,只初始化了前7個位置,後面的3個沒有初始化,所以輸出後面的3個字元會隨機初始化,會出現亂碼現象。

正確的做法是在第8個字元的位置賦值為「\0」,這樣才會只輸出前7個字元。

而用scanf()給c字串賦初值時不用在最後乙個字元後加「\0」,因為scanf()會在最後乙個字元後自動加上「\0」,但是當我們不用scanf()函式初始化時,必須要在後面加上「\0」。或者也可以用memset()函式將所有字元都初始化為『 』。

用字元陣列時也一樣。

C 列表初始化,字串初始化

列表初始化 int a 0 int a 全面應用 int a int a 0 預設初始化 定義變數時,沒有指定初值,則變數被預設初始化。定義函式體外的變數被初始化為0,函式體內部的內建型別變數不被初始化。字串初始化 string s1 string s2 s1 string s2 s1 string...

字串的初始化問題

define crt secure no warnings include include include c語言沒有字串型別,通過字元資料模擬 c語言字串,以字元 0 結尾,數字0 int main01 printf buf s n buf buf abc燙燙虥?亂碼 char buf2 100 ...

字串初始化

在c語言程式設計中,當我們宣告乙個字串陣列的時候,常常需要把它初始化為空串。總結起來有以下三種方式 1 char str 10 2 char str 10 3 char str 10 str 0 0 第 1 2 種方式是將str陣列的所有元素都初始化為 0 而第 3 種方式是只將str陣列的第乙個元...