Bueno, todo el código identado esta aquí.
Código C:
Ver original#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void AñadirAlumno(char **nombre, int *edad, int **notas, int numeroAlumnos);
void MostrarAlumno(char **nombre, int *edad, int **notas, int numeroAlumnos);
void GenerarFichero(char **nombre, int *edad, int **notas, int numeroAlumnos);
void main() {
char **nombre;
int *años;
int **notas;
int numeroAlumnos=0;
int fin=1;
int opcion;
while(fin == 1) {
printf("2. Mostrar alumno\n"); printf("3. Generar Fichero\n");
switch(opcion) {
case 1:
printf("Introduce numero de alumnos:\n"); scanf("%i", &numeroAlumnos
); nombre
= (char **)malloc(numeroAlumnos
*sizeof(char*)); años
= (int *)malloc(numeroAlumnos
*sizeof(int)); notas
= (int **)malloc(numeroAlumnos
*sizeof(int *));
for(int i = 0; i < numeroAlumnos; i++) {
nombre
[i
] = (char *)malloc(30*sizeof(char)); notas
[i
] = (int *)malloc(3*sizeof(int)); }
AñadirAlumno(nombre, años, notas, numeroAlumnos);
break;
case 2:
if(numeroAlumnos != 0) {
MostrarAlumno(nombre, años, notas, numeroAlumnos);
} else {
printf("No existen alumnos\n"); }
break;
case 3:
GenerarFichero(nombre, años, notas, numeroAlumnos);
break;
case 4:
fin = 0;
break;
}
for(int i = 0; i < numeroAlumnos; i++) {
}
}
}
void AñadirAlumno(char **nombre, int *edad, int **notas, int numeroAlumnos) {
for(int i = 0; i < numeroAlumnos; i++) {
printf("Introduce la edad\n");
for(int j = 0; j < 3; j++){
printf("Introduce las nota %i", j
+1); scanf("%i", ¬as
[i
][j
]); }
/*printf("Introduce las nota 2");
fflush(stdin);
scanf("%i", ¬as[i][1]);
printf("Introduce las nota 3");
fflush(stdin);
scanf("%i", ¬as[i][2]);*/
}
}
void MostrarAlumno(char **nombre, int *edad, int **notas, int numeroAlumnos) {
for(int i = 0; i < numeroAlumnos; i++) {
printf("Nombre: %s\n", nombre
[i
]); printf("Edad: %i\n", edad
[i
]); printf("Nota 1: %i Nota 2: %i Nota 3: %i\n", notas
[i
][0],notas
[i
][1],notas
[i
][2]); }
}
void GenerarFichero(char **nombre, int *edad, int **notas, int numeroAlumnos) {
FILE *fichero;
fichero
= fopen("Texto.txt","w");
if(fichero != NULL) {
for(int i = 0; i < numeroAlumnos; i++) {
fprintf(fichero
, "Nombre: %s\n", nombre
[i
]); fprintf(fichero
, "Edad: %i\n", edad
[i
]); fprintf(fichero
, "Nota 1: %i Nota 2: %i Nota 3: %i\n", notas
[i
][0],notas
[i
][1],notas
[i
][2]); fprintf(fichero
, "Nota media: %f", ((float)notas
[i
][0]+(float)notas
[i
][1]+(float)notas
[i
][2])/3); fprintf(fichero
, "-------------------------------------------------"); }
} else {
printf("No se ha creado correctamente el fichero\n"); }
}
Fallas que veo
1.-
Uso de ñ.
Ni el lenguaje ni ningún compilador de C que conozca soporta la ñ.
2.-
void main()
En algunos compiladores antiguos se permitia el retornar void en la función main, pero eso nunca a sido parte del estándar de C, asi que usa int main().
3.-
nombres
Nunca definiste una variable declarada "nombres", remplazalo por "nombre".
4.-
fflush(stdin)
El fflush fue hecho con la intención de limpiar el buffer de salida, no el de entrada, por lo que "fflush(stdin);" tiene un comportamiento indefinido.
5.-
default:
Te falta el default del switch, en caso de que se ingrese una opción erronea.
Aparte de eso tienes un problema por la forma en que manejas tus arreglos que te genera un segmentation fault, la verdad me dio flojera ver ese tema, pero ya te di un empujón.