c語言字串常量的問題,C語言字串常量的一個問題。

2021-03-04 04:35:00 字數 1335 閱讀 9926

1樓:匿名使用者

字串bai遇到\0表示結束

第一個字du符串就相zhi當於dao"abc123",那版麼長度為6

第二個字串就相當於"abc",那麼長度為3但是實際操作權發現並非如此,如下程式:

#include

;memcpy(c1, "abc123\01de\n", 0x20);

printf("%s\n", c1);

char c2[0x20] = ;

memcpy(c2, "abc\09de\n", 0x20);

printf("%s\n", c2);

printf("%d\n", strlen(c1));

printf("%d\n", strlen(c2));

}第一個字串並不能正確識別"\0",而是將"\01"看做一個字元,"\n"是一個字元,表示換行,這個你應該知道,結果第一個字串長度為10

第二個字串可以正確識別"\0",所以第二個字串長度為3

c語言如何定義一個常量字串

2樓:馬小芳

定義:用雙引號(「」)括起來的0個或者多個字元組成的序列儲存:每個字串尾自動加一個 『\0』 作為字串結束標誌(1)在c語言中沒有專門的字串變數,如果想將一個字串存放在變數中以便儲存,必須使用字元陣列,即用一個字元型陣列來存放一個字串,陣列中每一個元素存放一個字元。

例如「char a[10]="love".」

(2)在程式中,字串常量會生成一個「指向字元的常量指標」。當一個字串常量出現於一個表示式中時,表示式所使用的值就是這些字元所儲存的地址,而不是這些字元本身。因此,你可以把字串常量賦值給一個「指向字元 的指標」,例如:

char *a = "123" ; a = "abc";,後者指向這些字元所儲存的地址。但是,你不能把字串常量賦值給一個字元陣列,因為字串常量的直接值是一個指標,而不是這些字元本身。例如:

char a[5];a[0] = "a";就是錯誤的,報錯結果:invalid conversion from 'const char*' to 'char'。

例如:char a[10]="love",的意思就是用字串「love」來初始化字元陣列a的記憶體空間,而陣列的首地址也就是「love」字串的地址。

3樓:

【方式1】巨集定義

#define string "hello,world"

【方式2】字元陣列

char str=;  //大括號可以去掉//等價於

char str=;

【方式3】字元指標

char *pstr="hello,world";

c語言列印字串亂碼問題,C語言,字串輸出是亂碼

include void reverse char p,char q char myitoa int value,char const string,int radix else while value if sign reverse string,s 1 s 0 return string int...

c語言字串字母大小寫轉換,C語言字串字母大小寫轉換

scanf預設情況下碰到 空格 就會結束輸入,所以上面的 p 40 只會得到 hello 後面就斷了。最簡單的辦法就是用 gets p 代替 scanf s p 這行。scanf也可以接受 空格,請查閱 修飾符的具體用法。include int main void str i 0 printf s ...

c語言字串輸入輸出問題,一個C語言字串輸入輸出問題

在你輸入int型別的n後同時輸入了一個換行符,這使a 0 n 而不是 a 所以說你的a字元型陣列存的其實是 nabcd e 則沒有讀入,可以考慮用scanf s a 來讀入,或在輸入字元前用getchar 把換行符讀掉 那是鍵盤緩衝區殘餘資訊的問題 include int main while c ...