我想在数组的每一行中只输入一定数量的元素。我怎么做?

时间:2016-03-28 17:56:27

标签: c

我试图只在这个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数组的下一行?谢谢

2 个答案:

答案 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]);
    }
}

注意:

注意%cscanf()之前的空格。这是清除输入缓冲区所必需的。

答案 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]);
}