C 正确的格式说明符以打印字符串

C 正确的格式说明符以打印字符串,c,arrays,string,memory,C,Arrays,String,Memory,我使用以下代码: #include <stdio.h> int main() { int numOfClasses; do{ printf("How many classes do you have?\t"); scanf("%d", &numOfClasses); }while(numOfClasses < 1); int count = numOfClasses; char nameOfClass[30]

我使用以下代码:

#include <stdio.h>

int main() {
    int numOfClasses;

    do{
    printf("How many classes do you have?\t");
    scanf("%d", &numOfClasses);
    }while(numOfClasses < 1);

    int count = numOfClasses;
    char nameOfClass[30];
    int numOfGrades[30];
    printf("Which classes do you have, how many grades in each class?\n");
    for(int i = 0; i < count; i++){
            scanf("%s %d", &nameOfClass[i], &numOfGrades[i]);
    }
    for(int i = 0; i < count; i++){
            printf("%s : %d\n", nameOfClass[i], numOfGrades[i]);
    }

    return 0;
}

变量
char-nameOfClass[30]
应该是二维数组,如
char-nameOfClass[30][30]
。 当你读到类名时。所以,我把它改成二维数组。您正在使用以下语句读取字符串数组:
scanf(“%s%d”、&name类[i]、&numOfGrades[i])
如果不使用二维数组,则
nameOfClass
变量将只指向不正确的last class name

    int count = numOfClasses;
    char nameOfClass[30][30];
    int numOfGrades[30];
    printf("Which classes do you have, how many grades in each class?\n");
    for(int i = 0; i < count; i++){
            scanf("%s %d", nameOfClass[i], &numOfGrades[i]);
    }
    for(int i = 0; i < count; i++){
            printf("%s : %d\n", nameOfClass[i], numOfGrades[i]);
    }
int count=numOfClasses;
类[30][30]的字符名称;
国际货币基金组织等级[30];
printf(“您有哪些课程,每个课程有多少个等级?\n”);
for(int i=0;i
警告:格式“%s”要求参数类型为“char”,但参数2的类型为“char()[30]”如果
计数大于30怎么办?第一个参数上的运算符地址不应为:
scanf(“%s%d”,类[i]的名称,&numOfGrades[i])扫描(“%s%d”,类别[i]的名称,&numOfGrades[i]);从nameOfClass[i]1中删除&符号。
scanf(“%s%d”),…
应该使用像
scanf(“%29s%d”),…
2这样的宽度限制,使用像
nameOfClass[30][40]这样的非方形2D数组;
更具说明性。可能类似于
char nameOfClass[numOfClasses][100];int numOfGrades numOfClasses];…scanf(“%99s%d”,…
    int count = numOfClasses;
    char nameOfClass[30][30];
    int numOfGrades[30];
    printf("Which classes do you have, how many grades in each class?\n");
    for(int i = 0; i < count; i++){
            scanf("%s %d", nameOfClass[i], &numOfGrades[i]);
    }
    for(int i = 0; i < count; i++){
            printf("%s : %d\n", nameOfClass[i], numOfGrades[i]);
    }