我在大学里获得了一项任务,我需要使用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;
}
这里还有两行claves.txt,它是包含课程名称的文件。
NELI06001 Algebra Lineal
AGLIS4001 Analisis de Documentales en una Lengua Extranjera
答案 0 :(得分:1)
要回答您的评论(如果我理解正确的话),您可以打开2个文件,命名一个临时文件并开始复制从文件1到文件2的所有内容,直到找到您想要更改的内容,更改它并继续复制其余的重命名您创建的“temp”文件并删除旧文件。
0xFF0000FF
在删除和重命名之前,确保事情确实发生了变化,否则你将留下一个空文件。
我很想听到不同的/更有效的答案,因为我还在学习。