在哪里可以找到一些使用struct在C中创建的数据库的示例?
我在大学里被分配了一个任务,我需要使用struct在C中创建一个数据库,该数据库的结构如下:在哪里可以找到一些使用struct在C中创建的数据库的示例?,c,database,pointers,struct,C,Database,Pointers,Struct,我在大学里被分配了一个任务,我需要使用struct在C中创建一个数据库,该数据库的结构如下: 学生 名字 名字 姓 学期 那学期的课程 上述课程名称 等级 本课程授予的学分 重要的一点是,每个学期,任何学生都可以学习任何给定数量的课程 现在我陷入困境,因为要求如下: 我应该能够更新任何学生的信息 编辑他们的成绩,并使用不同的文件计算学分数,该文件说明每门课程授予多少学分 寻找学生 我非常熟悉指针和结构,我正在寻找C语言中类似数据库的示例,因为我还没有掌握如何在数据
学生
- 名字
- 名字
- 姓
- 学期
- 那学期的课程
- 上述课程名称
- 等级
- 本课程授予的学分
重要的一点是,每个学期,任何学生都可以学习任何给定数量的课程 现在我陷入困境,因为要求如下:
- 我应该能够更新任何学生的信息
- 编辑他们的成绩,并使用不同的文件计算学分数,该文件说明每门课程授予多少学分
- 寻找学生
#include <stdio.h>
#include <stdlib.h>
typedef struct UDA {
char clave[9];
char nombre[125];
} UDA;
typedef struct NOMBRE{
char N[100];
} NOMBRE;
typedef struct PERIODO{
UDA *uda;
} PERIODO;
typedef struct ALUMNO{
int nua;
NOMBRE nombre;
PERIODO *periodo;
} ALUMNO;
int main(int argc, const char * argv[]) {
int s, d;
FILE *clave;
FILE *alumi;
ALUMNO student;
switch (argc) {
case 3:
clave = fopen(argv[1], "r");
alumi = fopen(argv[2], "a+");
break;
case 2:
if(argv[1][0] == 'c'){
clave = fopen(argv[1], "r");
alumi = fopen("alumnos.txt", "a+");
fprintf(alumi, "0\n");
} else {
printf("ERROR\nArchivos faltantes\n");
return 0;
}
break;
case 1:
clave = fopen("claves.txt", "r");
alumi = fopen("alumnos.txt", "a+");
fprintf(alumi, "0\n");
break;
}
do{
printf("Desea:\n1. Agregar alumno\n2. Actualizar alumno\n3. Eliminar alumno\n4. Mostrar informacion de un alumno\n\t> ");
scanf("%d", &d);
} while(d<1 || d>4);
switch (d) {
case 1:
getchar();
printf("Ingrese el nombre del alumno: ");
scanf("%[^\n]", student.nombre.N);
fprintf(alumi, "%s\n", student.nombre.N);
}
fclose(alumi);
fclose(clave);
return 0;
}
要回答您的评论(如果我理解正确的话),您可以打开两个文件,命名一个临时文件,并开始将所有文件从文件1复制到文件2,直到找到要更改的内容,更改它并继续复制其余文件,重命名您创建的“临时”文件并删除旧文件
FILE *f, *g
f = open("alumnos.txt", "r"); // opens your main file
g = open("temp.txt", "w"); //opens your temporary file
.
. Copy from alumnos to temp and change the things you want to
.
fclose(f)
fclose(g)
remove("alumnos.txt") // old file without the changes
rename("temp.txt", "alumnos.txt") // renaming the new file with the changes
只需确保在删除和重命名之前确实发生了更改,否则将留下一个空文件
我希望听到不同的/更有效的答案,因为我还在学习。给我们展示一些代码问题,要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源,因为它们往往会吸引固执己见的答案和垃圾邮件,这与堆栈溢出无关。相反,请描述这个问题以及迄今为止为解决它所做的工作。哦,我们也不是编码服务。如果你熟悉你所说的元素,你应该能够自己做作业。我已经更新了我的帖子@Olaf很抱歉我的问题模棱两可,更具体地说,我想知道如何重新编写整个文件,这样我就可以编辑我写的第一个字符(0,我数据库中的学生人数),因为从我所读的内容来看,这样做比只更改那一行更简单。
FILE *f, *g
f = open("alumnos.txt", "r"); // opens your main file
g = open("temp.txt", "w"); //opens your temporary file
.
. Copy from alumnos to temp and change the things you want to
.
fclose(f)
fclose(g)
remove("alumnos.txt") // old file without the changes
rename("temp.txt", "alumnos.txt") // renaming the new file with the changes