0

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

#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;
}

我不知道为什么我不能输出数组的数据。

4

2 回答 2

0

您正在从数组打印adj,它只有numAdj元素空间,即如果numAdj是 3,您只能访问元素adj[0]、、adj[1]adj[2]。但是,最终循环迭代到numAdj * numNouns,它超过了adj只要numNouns不是 0 的结尾(在这种情况下,它只打印第一个元素,adj[0])。

使用for前两个循环中的每一个循环中的行来正确迭代adjnouns

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

于 2013-03-02T16:10:34.903 回答
0

你写:

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

接下来你正在做:

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

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

于 2013-03-02T16:13:36.287 回答