我正在尝试使用指针在结构中创建一个二维数组,因为我是c的新手,并且在指针主题中变得非常混乱。求救!
struct course
{
char *coursecode;
char *coursesession[5];
};
int main()
{
int n = 0;
int numSession = 0;
struct course *main = malloc(sizeof(struct course));
printf("Enter the course code and the session in this order:");
scanf("%s", main->coursecode);
printf("Enter the number of session required:");
scanf("%d", &numSession);
for (int i = 0; i < numSession; ++i)
{
printf("Enter the session code (M1...):");
scanf("%s", main->coursesession[i]);
}
++n;
}
答案 0 :(得分:1)
您已将coursecode
声明为指向char
的指针,但您需要为其分配空间,您可以使用malloc
进行操作。
您已将coursesession
声明为指向char
的5个指针数组。您需要为所有5个指针分配空间,再次使用malloc
。
或者,您可以将它们都声明为数组,例如
struct course
{
char coursecode[100];
char coursesession[5][100];
};
这声明coursecode
为100 char
的数组,coursesession
为5个100 char
数组的数组。显然,您可以将100
调整为您需要的任何内容,但无论如何都会修复存储大小。
答案 1 :(得分:0)
您可以修改此类代码
#include <stdio.h>
#include<stdlib.h>
struct course
{
char *coursecode;
char *coursesession[5];
};
int main()
{
int n,i = 0;
int numSession = 0;
struct course main;
main.coursecode = (char *)malloc(100*sizeof(char));
printf("Enter the course code and the session in this order:");
scanf("%s", main.coursecode);
printf("Enter the number of session required:");
scanf("%d", &numSession);
for (i = 0; i < numSession; ++i)
{
printf("Enter the session code (M1...):");
main.coursesession[i] = (char *)malloc(100*sizeof(char));
scanf("%s", main.coursesession[i]);
}
++n;
free(main.coursecode);
for (i = 0; i < numSession; ++i){
free(main.coursesession[i]);
}
}