本文目錄一覽:
C語言 string數組
c字元串的長度需要再加上一個0位置的。讀取到了字元串結尾的0才會當作一個完整的字元串.
你這個字元串才分配了6個位元組,spring和summer顯然都越界了。從season[1]開始的話,只有到fall後才能讀取到0。
|s|p|r|i|n|g|s|u|m|m|e|r|f|a|l|l|\0\|\0|w|i|n|t|e|r|
解決方法是:char season[][7]
跪求答案 C語言中 string 數組的問題
恩,出錯原因跟printf有關。
改成:
printf(“%s\n”,key[0].c_str()); 就可以了。
因為printf的形式是:printf(const char *, …)。注意第二個參數是”…”。…不是省略號的意思,它是C/C++的一種關鍵字,表示接受任意數量和任意類型的參數。也就說,它不會做隱式類型轉換。
回到你的調用:printf(“%s\n”, key[0])。%s表示後面傳入的參數應該是一個const char *類型,但是你傳入的是string類型,所以出錯了。把key[0]改成key[0].c_str()就可以了。c_str()返回的是一個const char *類型。
C語言中有string嗎?
C語言中沒有string類型。
string類型是 C++、java、VB等編程語言中的。 在java、C#中,String類是不可變的,對String類的任何改變,都是返回一個新的String類對象。string 是C++標準程序庫中的一個頭文件,定義了C++標準中的字元串的基本模板類std::basic_string及相關的模板類實例。
而在C語言中,C語言中沒有字元串類型,字元串是存放在字元型數組中的,將字元串作為字元數組來處理的。為了測定字元串的實際長度,C語言規定了一個「字元串結束標誌」,以字元’\0’作為結束標誌 。
擴展資料:
C++中string的使用:
其中的string是以char作為模板參數的模板類實例,把字元串的內存管理責任由string負責而不是由編程者負責,大大減輕了C語言風格的字元串的麻煩。std::basic_string提供了大量的字元串操作函數,如比較、連接、搜索、替換、獲得子串等。並可與C語言風格字元串雙向轉換。
字元串在C語言中的使用:
字元串常量初始化數組。如:char c[ ]={『c』,『 』,『p』,『r』,『o’,’g’,’r’,’a’,’m’};可寫為:char c[ ]={“C program”}; 或去掉{}寫為:char c[ ]=”C program”。
參考資料來源:百度百科-string類
參考資料來源:百度百科-字元數組
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/227555.html