有關字串陣列越界的問題 請實踐一下,謝謝

2022-02-26 21:44:36 字數 900 閱讀 9385

1樓:

因為你的陣列沒有存滿,用for迴圈結果就把陣列整個都輸出來了,包括裡面沒有存放資料的,當然會出現亂碼了。你應該在for迴圈加上一個判斷,比如說讀到'\0'就退出什麼的,然後再所有資料結尾加上\0就行了。或是第一個用如下方法:

for(i=0;i<3;i++)

也不會越界

2樓:堅首承諾

for(i=0;i<3;i++)

直接這樣輸出就避免了陣列下標越界的問題了。

3樓:匿名使用者

試驗過了,注視在裡面了,你看看,有什麼疑問再說

#include

#include

using namespace std;

int main()

int i,j;

char s[3][8]; //一開始沒有賦值,所以均為亂碼

scanf("%s",s[0]);

strcpy(s[1],"s1");

s[2][0]='s';

s[2][1]='1';

s[2][2]='\0';

//輸出字串陣列s

for(i=0;i<3;i++)//不論怎麼限制都會s字串陣列訪問越界??????????

for(j=0;j<8;j++)

if(s[i][j]=='\0') break; //等於'\0'時,說明字串已經結束了。後面的你沒有賦值,所以出來的是亂碼

cout << s[i][j] ;

cout << endl;

char name[3][8]=;//這邊一開始就初始化了,所以後面的系統也預設賦值為\0了。

//但是這個就顯示正確,這是為什麼?????????除了初始化,別的地方都一樣啊,麻煩各位幫忙看看,謝謝。

c語言中字串和陣列的區別,C語言中字串和陣列的區別

這個是字元陣列。c語言字元陣列和字串的區別,字元陣列是一個儲存字元的陣列,而字串是一個用雙括號括起來的以 0 結束的字元序列,雖然字串是儲存在字元陣列中的,但是一定要注意字串的結束標誌是 0 總的來說是沒有區別的,字串就是以字元陣列形式儲存的。可以把一個字串看成是一個字元陣列,可以按陣列那樣操作。兩...

C語言,關於字串與字元陣列問題,求高手指點一二啊,謝謝

c的教科書中一再宣告,使用strcpy str1,str2 時一定要保證str1有足夠的空間保證str2拷入。言下之意,strcpy不檢查str1是否能容納str2的拷入,正確性完全由程式設計師來控制。你把 01234567891 拷入到str 10 中,前10個字元是保險的,後二個字元就 難說 了...

C動態分配的問題,C 動態分配字串陣列的問題

使用stl 標準模板庫 中的vector 向量 或者list,但是個人覺得你這種情況vector比較方便,stl提供了一些通用的資料型別,你可以通過其成員函式實現一些通用的操作而不必關心它是如何實現的 具體的vector使用可以在網上找到非常多的教程,下面簡單顯示一下你的問題中的使用方法 inclu...