我試圖在用戶指定的列數中顯示數組的元素。他們決定數組的大小以及它將顯示多少列。現在,我正在列中打印數組的元素,但是,我有多餘的行和列中的數字不在數組中。因此,如果我選擇數組的大小和列數爲5 3,我希望看到:在C語言的用戶指定列中打印單維數組
1 3 5
2 4
相反,我得到的是這樣的:
1 3 5
2 4 107863456
128976543 58764 896543221
5643217 90876543456 8976543
我得到3列,4行。我不知道爲什麼會發生這種情況。下面是與創建列涉及我的代碼的部分,讓我知道如果需要更多的代碼(x是一個變量,其保持數組的大小,y成立列數):
void colDisplay(int *aPtr, int x, int y) {
int i, j;
srand(time(NULL));
for(i = 0; i < x; i++) {
aPtr[i] = rand()%5+1;
}
/*Trying to format display for number of columns used*/
printf("Unsorted columns\n");
for(i = 0; i < x; i++) {
for(j = 0; j < y; j++) {
//printf("%d = %d ", (i*y)+j, aPtr[(i*y)+j]);
printf("%d ", aPtr[(i*y)+j]);
}
printf("\n");
}
}
你的循環結構是不是做你打算什麼。您正在執行總共'x * y'個打印語句。事實上,你只需要總共'x'印刷品。這也意味着你的'aPtr'數組訪問超出邊界,因此也就是垃圾數據。 – kaylum