c语言for循环里的scanf怎么用?

int i;
int arraySize;
char mark[arraySize];
const int max = 30;
char name[arraySize][max];
printf("Enter number of marks: ");
scanf("%d", &arraySize);

for (i = 0; i < arraySize; i ++)
{
printf("Enter name: ");
scanf("%s", name[i]);
printf("Enter mark for %s: ", name[i]);
scanf("%s", &mark[i]);
}
问题是这样的,比如我当系统出来Enter mark for 什么什么的时候,比如说输入23,再循环一次的时候,比如说输入70,再一次循环的时候输入45,结果打印mark这个字符串的时候是2745,也就是说明mark[0]=2,mark[1]=7,mark[2]=45,但是我想要的是mark[0]=23,mark[1]=70,mark[2]=45,这里该怎么改?

因为你非常有可能每输入一个字符就按了一次回车,而回车其实也是一个字符。
在 scanf("%c",char[i]);语句后加上一句getchar();就可以啦!

如果前面有输入数据的情况。把getchar();放在 scanf("%c",char[i]);之前。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-13
    const int max = 30;//这样不好吧#defin max 30
    char name[arraySize][max];
    printf("Enter number of marks: "); 
    scanf("%d", &arraySize); 

    for (i = 0; i < arraySize; i ++)
    {
        printf("Enter name: ");
        scanf("%s", name[i]);//用了name[i]
        printf("Enter mark for %s: ", name[i]);
        scanf("%s", &mark[i]);//&不要且上面name[i]已经用了. 这样会覆盖
    }

 



#include<stdio.h>
#define MAX 30
int main(void)
{
    int i, tmp;
    char mark[MAX][MAX];
    char name[MAX][MAX];
    printf("Enter number of marks: ");
    scanf("%d", &tmp);

    for (i=0; i <tmp;i++)
    {
        printf("Enter name: ");
        scanf("%s", name[i]);
        printf("Enter mark for %s: ", name[i]);
        scanf("%s", mark[i]);
    }
    for(i=0;i<tmp;i++)
        printf("name:%s\tmark:%s\n", name[i], mark[i]);
    return 0;
}

本回答被提问者采纳
第2个回答  2016-01-12
int i;
int a[10] = {0};
for(i = 0; i < 10, i++)
{
scanf("%d", &a[i]);
}
for(i = 0; i < 10; i++)
{
printf("%d",a[i]);
}
这是输入数字的,要输入字母的话,可以把a[10]定义为char型
相似回答