【发布时间】:2021-01-29 21:35:15
【问题描述】:
我对 C 有点陌生。所以,我动态创建了一个结构数组,并希望从用户那里获取输入并存储在数组中。
struct course{
char code[CODE_LENGTH];
char name[NAME_LENGTH];
int credits;
};
第二个字符串成员name 存储得很好。
第一个字符串成员 code 附加了第二个字符串成员。
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define CODE_LENGTH 7
#define NAME_LENGTH 3
struct course *createList(){
int n;
printf("Enter no. of courses you wish to take: ");
scanf("%d", &n);
struct course *courses = (struct course*)malloc(sizeof(struct course)*n);
for(int i=0;i<n;i++){
printf("Enter Course Code: ");
scanf("%s",courses[i].code);
printf("Enter Course name: ");
scanf("%s",courses[i].name);
printf("Enter no. of credits: ");
scanf("%d",&courses[i].credits);
printf("\n");
printf("%s\n%s ",courses[i].code,courses[i].name);
}
return courses;
}
int main(){
struct course *c = NULL;
int credit;
c=createList();
free(c);
return 0;
}
输出:
Enter no. of courses you wish to take: 2
Enter Course Code: CS6101D
Enter Course name: DS
Enter no. of credits: 4
CS6101DDS
DS Enter Course Code:
如果CODE_LENGTH 是7,code 怎么能存储更多,为什么还要附加另一个字符串?
帮帮我!
【问题讨论】:
-
C 和 C++ 是不同的编程语言。
-
无关:建议使用
struct course *courses = malloc(n * sizeof *courses);而不是C中的struct course *courses = (struct course*)malloc(sizeof(struct course)*n);,它更短更安全。
标签: arrays c string struct dynamic-memory-allocation