我试图只在这个2D数组中输入一定数量的元素,如下所示:
AEF
FECCF
ERE
RRGT
EHWEG
当前循环执行此操作:
for(loop = 0; loop < routines; loop++)
{
for(j = 0; j < MAX; j++)
{
scanf("%c", &danceRoutines[loop][j]);
}
}
这是我必须在元素中扫描的代码。据我所知,这使得我在列中输入MAX量的元素(MAX = 26)。我怎么做到这样,在输入少于MAX的元素之后,它允许我进入2D数组的下一行?谢谢
答案 0 :(得分:0)
首先询问在进入循环读取元素之前必须输入多少元素。
int elements;
for(loop = 0; loop < routines; loop++)
{
printf("enter number of elements for row %d\n", loop + 1);
scanf("%d", &elements); //read the number of elements
for(j = 0; j < elements; j++)
{
scanf(" %c", &danceRoutines[loop][j]);
}
}
注意:强>
注意%c
中scanf()
之前的空格。这是清除输入缓冲区所必需的。
答案 1 :(得分:0)
这是您实现此方法的方法。创建一个char**
数组danceRoutines
,它将指向字符串,然后将用户输入的每个新字符串的地址分配给danceRoutines[i]
在循环中。
int routines=5,loop;
char **danceRoutines=(char**)malloc(sizeof(char*)*routines);
for(loop = 0; loop < routines; loop++)
{
char *s=(char*)malloc(sizeof(char*));
scanf("%s",s);
danceRoutines[loop]=s;
}
然后通过迭代数组danceRoutines
//display
for(loop = 0; loop < routines; loop++)
{
printf("%s\n",danceRoutines[loop]);
}