我有一個如下所示的代碼,最後一條語句只有在我使用l_plates [i]時纔有效。在下面的情況下,它會拋出一個錯誤「傳遞'sprintf'的參數1使得整型指針沒有投射」 如果我還需要另一個for循環,那麼該怎麼辦?如果我使用sprintf,我應該使用額外的元素嗎?請解釋一下 。提前致謝。爲什麼我們不應該在sprintf中包含最後一個數組元素?
char type, letters[4], digits[5];
char l_plates[M][N];
for (i=0; i<M; i++) {
scanf(" %c", &type);
scanf("%3s", letters);
scanf("%4s", digits);
sprintf(l_plates[i][N], "%s %s %c", letters, digits, type);
}
'l_plates [i] [N]'的類型是char,但是'sprintf()'想在第一個參數中使用'char *'。此外,讀取'l_plates [i] [N]'正在讀取超出數組邊界。 – jxh 2013-04-05 01:34:30
使用'&l_plates [i] [0]'。如果你使用'N',你就在緩衝區的末尾。 – 2013-04-05 01:34:58
sprintf需要一個指向需要寫輸出的內存的指針。你傳遞的是二維字符數組中第(N + 1)個元素到sprintf。不是第i個緩衝區。要修復你的代碼,使用'sprintf(l_plates [i],....);'。 – 2013-04-05 01:37:09