在 C 中,如何将字符串存储在多维 table 中?
in C how can i store strings in a multidimensional table?
我正在尝试为学校创建一个程序,您可以在其中使用 name
、surname
、age
等
进行注册和登录
您最多可以注册 100 次,每次只能使用不同的姓氏。
我创建了 Register/login 屏幕如下
int main(int argc, char *argv[]) {
int i = 0;
MSCREEN: printf (" ===== Main Screen ===== \n");
printf ("To Register type: Register\n");
printf ("To Log-In type: Login\n");
char rl[9]; //rl=RegisterLogin
while ((strcmp (rl, "Register") != 0) || (strcmp (rl, "register") != 0) || (strcmp (rl, "Login") != 0) || (strcmp (rl, "login") != 0)) {
scanf (" %s", &rl);
if((strcmp(rl,"Register")==0) || (strcmp(rl,"register")==0)) {
printf ("You will now Register\n");
Register();
i++;
goto MSCREEN;
break;
}
else if ((strcmp(rl,"Login")==0) || (strcmp(rl,"login")==0)) {
printf ("You will now Login");
Login();
break;
}
else{
printf("Please type 'Register' or 'Login'\n");
}
}
printf ("Completed");
return 0;
}
现在的问题是我不完全知道如何使用多维数组存储不同的名字和姓氏。我不能为此使用单独的文件或数据结构,所以我被卡住了。
我需要能够在二维数组中显示信息,但为了存储信息,我可能需要一个三维数组。
我现在还需要能够使用单独的函数来编辑名称,如下所示:
void Register()
{
//char name[50], surname[50], age[50], lamia[50], patra[50], volos[50], sum[50];
printf (" ===== Register ===== \n");
printf ("Please type your Name:\n");
scanf (" &s", &name[50]);
printf ("Please type your Surname:\n");
scanf (" &s", &surname[50]);
printf ("Please type your Age:\n");
scanf (" &s", &age[50]);
printf ("Please type your Trips to Lamia:\n");
scanf (" &s", &lamia[50]);
printf ("Please type your Trips to Patra:\n");
scanf (" &s", &patra[50]);
printf ("Please type your Trips to Volos:\n");
scanf (" &s", &volos[50]);
return;
只会将必要的信息保存为全局变量,在下次注册后会发生变化。
那么我如何才能将我需要的所有信息存储在一个多维数组中,然后才能在以后访问这些信息呢?
既然你不能使用结构,下面是你如何使用 3D 数组
char students[STUD][DATA][LENGTH];
其中 STUD
是您要存储的最大学生人数;
DATA
是每个学生的条目数,在您的情况下是 2
(姓名和姓氏);
LENGTH
是每个 name/surname.
的最大字符数
每次你想访问第n个学生的名字时你都会参考
students[n][0]
而对于您要使用的姓氏
students[n][1]
students[x]
代表一个学生,是一个指向char的指针(指向name和surname[=48=这两个指针]).
student[x][y]
表示学生的名字或姓氏,是一个指向char的指针。
student[x][y][z]
表示组成名字或姓氏的字符之一。
如果你想在你的程序中的某个点打印数据,我建议你在每个 name/surname 的末尾放置一个 '[=20=]'
,同时你将它们填充到数组中。
并且您还应该跟踪您已初始化的学生数量。
如果您不打算覆盖学生的数据,您甚至可以使用 memset
用 '[=20=]'
初始化每个元素,然后填充数据而不关心终止字符串或跟踪你有多少学生。
玩得开心。
我正在尝试为学校创建一个程序,您可以在其中使用 name
、surname
、age
等
您最多可以注册 100 次,每次只能使用不同的姓氏。 我创建了 Register/login 屏幕如下
int main(int argc, char *argv[]) {
int i = 0;
MSCREEN: printf (" ===== Main Screen ===== \n");
printf ("To Register type: Register\n");
printf ("To Log-In type: Login\n");
char rl[9]; //rl=RegisterLogin
while ((strcmp (rl, "Register") != 0) || (strcmp (rl, "register") != 0) || (strcmp (rl, "Login") != 0) || (strcmp (rl, "login") != 0)) {
scanf (" %s", &rl);
if((strcmp(rl,"Register")==0) || (strcmp(rl,"register")==0)) {
printf ("You will now Register\n");
Register();
i++;
goto MSCREEN;
break;
}
else if ((strcmp(rl,"Login")==0) || (strcmp(rl,"login")==0)) {
printf ("You will now Login");
Login();
break;
}
else{
printf("Please type 'Register' or 'Login'\n");
}
}
printf ("Completed");
return 0;
}
现在的问题是我不完全知道如何使用多维数组存储不同的名字和姓氏。我不能为此使用单独的文件或数据结构,所以我被卡住了。
我需要能够在二维数组中显示信息,但为了存储信息,我可能需要一个三维数组。 我现在还需要能够使用单独的函数来编辑名称,如下所示:
void Register()
{
//char name[50], surname[50], age[50], lamia[50], patra[50], volos[50], sum[50];
printf (" ===== Register ===== \n");
printf ("Please type your Name:\n");
scanf (" &s", &name[50]);
printf ("Please type your Surname:\n");
scanf (" &s", &surname[50]);
printf ("Please type your Age:\n");
scanf (" &s", &age[50]);
printf ("Please type your Trips to Lamia:\n");
scanf (" &s", &lamia[50]);
printf ("Please type your Trips to Patra:\n");
scanf (" &s", &patra[50]);
printf ("Please type your Trips to Volos:\n");
scanf (" &s", &volos[50]);
return;
只会将必要的信息保存为全局变量,在下次注册后会发生变化。
那么我如何才能将我需要的所有信息存储在一个多维数组中,然后才能在以后访问这些信息呢?
既然你不能使用结构,下面是你如何使用 3D 数组
char students[STUD][DATA][LENGTH];
其中 STUD
是您要存储的最大学生人数;
DATA
是每个学生的条目数,在您的情况下是 2
(姓名和姓氏);
LENGTH
是每个 name/surname.
每次你想访问第n个学生的名字时你都会参考
students[n][0]
而对于您要使用的姓氏
students[n][1]
students[x]
代表一个学生,是一个指向char的指针(指向name和surname[=48=这两个指针]).
student[x][y]
表示学生的名字或姓氏,是一个指向char的指针。
student[x][y][z]
表示组成名字或姓氏的字符之一。
如果你想在你的程序中的某个点打印数据,我建议你在每个 name/surname 的末尾放置一个 '[=20=]'
,同时你将它们填充到数组中。
并且您还应该跟踪您已初始化的学生数量。
如果您不打算覆盖学生的数据,您甚至可以使用 memset
用 '[=20=]'
初始化每个元素,然后填充数据而不关心终止字符串或跟踪你有多少学生。
玩得开心。