输出数组的所有元素 - C.

时间:2013-03-02 16:04:30

标签: c for-loop

我正在尝试输出包含用户输入的arrary的所有元素。 例如,如果用户为形容词输入微笑,快乐和悲伤,我想将其输出回用户。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int counter_1, counter_2, counter_3, tracker;

    printf("Enter a number of adjectives: ");
    int numAdj;

    scanf("%d", &numAdj);

    printf("Enter a number of nouns: ");
    int numNouns;

    scanf("%d", &numNouns);

    char adj[numAdj];
    char nouns[numNouns];

    printf("Please enter %d adjectives: \n", numAdj);

    for (counter_1 = 0; counter_1 <= numAdj - 1; counter_1++) {
        scanf("%s", &adj[counter_1]);
    }

    printf("Please enter %d nouns: \n", numNouns);

    for (counter_2 = 0; counter_2 <= numNouns - 1; counter_2++) {
        scanf("%s", &nouns[counter_2]);
    }

    for (counter_3 = 0; counter_3 <= numAdj - 1; counter_3++) {
        printf("%s", &adj[counter_3]);
    }
    return 0;
}

我无法弄清楚为什么我无法输出数组的数据。

2 个答案:

答案 0 :(得分:0)

您正在从数组adj进行打印,该数组只有numAdj元素的空间,即如果numAdj为3,则您只能访问元素adj[0],{{ 1}}和adj[1]。但是,最后一个循环迭代到adj[2],当numAdj * numNouns不为0时,它会超过adj的末尾(在这种情况下,它只打印第一个元素numNouns

使用前两个循环中的adj[0]行正确迭代foradj

此外,nounsadj都是单个nouns元素的数组,即单个字符,而不是字符串。你需要使它们成为字符数组的数组(因为C字符串是字符数组,C字符串数组是字符数组的数组)。

答案 1 :(得分:0)

你写的是:

char adj[numAdj];
char nouns[numNouns];
接下来你正在做:

...
scanf("%s", &adj[counter_1]);
...

但是&adj[counter_1]char的引用,但是scanf等待char *的引用。这是错误的。 char nouns[numNouns];数组存在同样的问题,它是一个字符数组,而不是一个字符串数组。