1樓:匿名使用者
對的。字串結束符\0始終是字串的一部分,這是編譯器加上去的,是為了標記字串何時結束。
str == 『s』 不能這樣判斷,前者的值是地址值,即常量指標,後者的值是『s'的ascll碼,根本不能比較。改為這樣比較一個字元的字元倒可,如下:*str=='s'.
注意陣列名是它的首元素地址的常量指標。
如你上面所寫的即可。
2樓:
在定義字串的時候,是字串長度+1,因為字串有一 個結束標誌'\0'
所以char str[1];該為char str[2]; 才對字串的比較,用法是對的
字串好象不能那麼用,
字元可以
3樓:
1. 你的例子中的"s"或"t"都是佔2個位元組的,後面還有一個'\0',沒有'\n',如果你的字串中有 "s\n",則\n也是它的一部分,只是顯示的時候是一個換行而已。
所以你應該定義成char str[2]。
2. 字串的比較只能使用strcmp來進行,如strcmp(str,"s"); 不能使用 str == 's'判斷,這個語句的意思是比較 str的地址和常量 's'的地址是否相同。
4樓:佴典
把char型的陣列定義大一點,必須預留字元型的結束符\0。
字串比較可以用strcmp,返回0表示字串相同。
如果只比較一個字元,那你就定義char型的變數(char a='t';),不要定義陣列了。要定義陣列就必須預留結束標誌。
關於C語言的字串問題
應該不可以,函式指標本質傳遞的是這個函式在記憶體中的起始地址,而字串不可以弄。不過高階語言分配的時候,會自動建立一個叫做 符號表 的資料結構,裡面有這個程式所有的宣告識別符號和其地址 大小等資訊,你如果可以找到訪問這個表的方法,就能實現你的這個想法了。不過我也只知道有這個東西,卻不知道如何去訪問,現...
c語言字串陣列的問題C語言字串陣列的問題
include int main scanf s a for i 0 a i 0 i for j 0 j 5 j 修改 1 下標從0 4,共5個 return 0 每行結尾的 僅僅是為了連線字串使用的,如果一個字串過長,寫在一行比較不合適,就在該行結尾處加上一個反斜槓 就可以在下邊的行繼續寫這個字串...
C語言字串出現亂碼,C語言 字串輸出時最後出現亂碼
第6行改為 char a 100 b 100 如果要輸出最終結果,沒必要每複製一個字元就輸出一次。將第25行刪掉。可以參考一下這個,講的很清楚 亂碼問題 codeblocks亂碼問題。它這個是codeblocks的,其他其實也差不 太多吧。關鍵是 原始檔儲存編碼 編譯器解釋原始檔的編碼 生成執行檔案...