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 ...