2013-11-10 198 views
1

我想用字符填充2維數組。我有下面的代碼,它似乎工作,但不正確。所以問題是它用'。'填充整個數組。字符。什麼似乎是我的問題?每個「單詞」怎麼不在它自己的行上?用字符填充二維數組

char Table[10][50]; 
char block[100] = "the cat and the hat."; 
int pos = 0; 

while (pos < StrLen(block)) { 
    for(int i = 0; i < 10; i++) { 
     for(int y = 0; y < 50; y++) { 
      Table[i][y] = block[pos]; 
     } 
    } 
    pos++; 
} 

cout << Table[0][0] << " " << Table[0][1] << " " << Table[0][2] << endl; 
cout << Table[1][0] << " " << Table[1][1] << " " << Table[1][2] << endl; 

結果

. . . . 
. . . . 
+0

只有在for循環完成填充整個數組後才增加'pos'。所以你首先用'block [0]'填充所有的數組位置,然後用'block [1]'覆蓋它們,等等。最後,你用'block [strlen(block)-1]'覆蓋它們,這就是''。''。 – jogojapan

+0

想一想。你有多少次設置'table [0] [0]'? – Mat

+0

在上面的代碼中,你在努力尋找'block'中的'words'?如果你想找到單詞,那麼你必須尋找分隔單詞的空間。 – john

回答

0

你想要做的就是這樣的事情,我認爲:

char Table[10][50]; 
char block[1000] = "the cat and the hat."; 
int pos = 0; 
int row = 0; 
int col = 0; 

while (pos < strLen(block)) { 
    if(block[pos] == ' ') 
    { 
     table[row][col] = '\0'; 
     row++; 
     col = 0; 
    } 
    else 
    { 
     table[row][col] = block[pos]; 
     col++; 
    } 
    } 
    pos++; 
} 

This鏈接還可以幫助你。

+0

OP說他想分開這些單詞。 – john

+1

是的,改變了我的回答 –

0

這個怎麼樣

int row = 0; 
int col = 0; 
for (int pos = 0; pos < strlen(block); ++pos) 
{ 
    if (block[pos] == ' ') 
    { 
     Table[row][col] = '\0'; // make sure each row is null terminated 
     ++row;     // move to the next row 
     col = 0;    // starting at column zero 
    } 
    else 
    { 
     Table[row][col] = block[pos]; 
     ++col; 
    } 
} 

未經測試的代碼。

與您的代碼不同,它會在輸入中查找空格,如果您仔細考慮它,幾乎需要將文本分隔爲單詞。

0

因爲每次迭代外部'while'循環,它都會覆蓋'Table [i] [y]',移開外部循環並進行以下修改。

char Table[10][50]; 
char block[1000] = "the cat and the hat."; 
int pos = 0; 

for(int i = 0; i < 10 && i<strlen(block); i++) { 
    for(int y = 0; y < 50; y++) { 
     Table[i][y] = block[pos];  
    } 
    pos++; 
} 
+0

你能解釋一下你的代碼的作用嗎?爲什麼你認爲這是對原代碼的改進?還要注意,在你的代碼中'pos'是多餘的。它可以替換爲'我'。 – jogojapan

+0

我以爲他想用字符串中的一個字符填充每一行。正如他所說,「每個單詞如何」並不在它自己的行上「,在這種情況下,」單詞「似乎意味着字符,因爲原始代碼對單詞之間的分隔符沒有任何作用。 – Hawaiyon