我正在尝试输出包含用户输入的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;
}
我无法弄清楚为什么我无法输出数组的数据。
答案 0 :(得分:0)
您正在从数组adj
进行打印,该数组只有numAdj
元素的空间,即如果numAdj
为3,则您只能访问元素adj[0]
,{{ 1}}和adj[1]
。但是,最后一个循环迭代到adj[2]
,当numAdj * numNouns
不为0时,它会超过adj
的末尾(在这种情况下,它只打印第一个元素numNouns
)
使用前两个循环中的adj[0]
行正确迭代for
和adj
。
此外,nouns
和adj
都是单个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];
数组存在同样的问题,它是一个字符数组,而不是一个字符串数组。