用C语言存储学生姓名和成绩的数组
我正在尝试用C语言编写一个小程序,它将存储用户输入的学生人数的名字、姓氏和分数。到目前为止,我最大的问题是如何让每个学生的名字和成绩打印在新的一行上。使用字符串操作符,我得到一个错误,而使用char操作符,我只得到第一个字母和分数。我怎样才能把这些名字全部打印出来呢?提前谢谢你的帮助用C语言存储学生姓名和成绩的数组,c,arrays,pointers,dynamic-memory-allocation,C,Arrays,Pointers,Dynamic Memory Allocation,我正在尝试用C语言编写一个小程序,它将存储用户输入的学生人数的名字、姓氏和分数。到目前为止,我最大的问题是如何让每个学生的名字和成绩打印在新的一行上。使用字符串操作符,我得到一个错误,而使用char操作符,我只得到第一个字母和分数。我怎样才能把这些名字全部打印出来呢?提前谢谢你的帮助 #include <stdio.h> #include <stdlib.h> int main(){ int classsize,i; printf("Please ind
#include <stdio.h>
#include <stdlib.h>
int main(){
int classsize,i;
printf("Please indicate number of records you want to enter (min 5, max 15):\n");
scanf("%d", &classsize);
char *first, *last;
double *mark;
first=(char*)malloc(classsize*sizeof(char));
last=(char*)malloc(classsize*sizeof(char));
mark=(double*)malloc(classsize*sizeof(double));
printf("Please input records of students (enter a new line after each record), with following format 1. first name 2. last name 3. score.\n");
for (i=0; i<classsize; i++) {
scanf("%s", &first[i]);
scanf("%s", &last[i]);
scanf("%lf", &mark[i]);
}
for (i=0; i<classsize; i++) {
printf("%s, %s has a %lf\n", *(first+i), *(last+i), *(mark+i));
}
}
与
变量中只能存储1个字符串,因为C中的字符串是char*。第一个是char*,第一个[i]是char,所以您有与此相关的错误。您希望第一个是char**,第一个[i]是char*
你想要
char **first, **last;
并更改分配,以说明您不需要键入malloc
然后在for循环中为first和last中的每个char*分配内存,然后再读取其中的名称
first[i] = malloc(some_size * sizeof(char));
...
//---------------------------------v
first=malloc(classsize*sizeof(char *));
first[i] = malloc(some_size * sizeof(char));
...