我要做的是只在多维数组的一维中读取/存储数据,如下所示:

#include <stdio.h>

int main(void){
    int array [5] [10];
    int i;

    for (i = 0; i < 5; i++) {
        printf("Reading %d number in the first dimension.\n", i+1);
        scanf("%d", &array [i]);/*Trying to store data just on 1st dimension */
    }
    printf("\n");
    for (i = 0; i < 5; i++){
        printf("%d\n", array [i]); /*Trying to print the data read*/
    }

    return 0;
}

结果发现程序意外地输出了乱七八糟的数据:
2673556
2673576
2673656
2673566
2673756

我该如何正确地访问这个单一维度?

最佳答案

我想你的意思是

#include <stdio.h>

#define M 3
#define N 10

int main(void){
    int array [M] [N];
    int i, j;

    i = 0;
    for ( ; i < N; i++) {
        printf("Reading %d number in the first dimension.\n", i+1);
        if ( scanf("%d", &array [0][i]) != 1 ) break;
    }
    printf("\n");
    for ( j = 0; j < i; j++){
        printf("%d\n", array[0][j]); /*Tring to print the data read*/
    }

    return 0;
}

或以下
#include <stdio.h>

#define M 3
#define N 10

int main(void){
    int array [M] [N];
    int i, j;

    i = 0;
    for ( ; i < M; i++) {
        printf("Reading %d number in the first dimension.\n", i+1);
        if ( scanf("%d", &array [i][0]) != 1 ) break;
    }
    printf("\n");
    for ( j = 0; j < i; j++){
        printf("%d\n", array[j][0]); /*Tring to print the data read*/
    }

    return 0;
}

第一个程序填充数组的第一行,而第二个程序填充数组的第一列。

关于c - 在C中从多维数组的一维打印数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30691513/

10-15 02:00