¡Vaya, comentarios en catalán! Quina sorpresa més agradable!
A ver, me gustaría comentarte unas cosillas primero. Si estás programando en C++, has de tener en cuenta que has de incluir la librería cstdio, no stdio.h.
Por otro lado, no es necesario incluir la biblioteca iostream ya que no utilizas nada de ella.
¿Qué quieres decir con borrar exactamente? Permíteme copiarte el case 3 del bloque switch:
Lo que haces es:
- Decrementar el indicador de posición afegir.
- Guardar en el documento el nombre del contacto seguido de... un puntero Si pones "numero" a secas, ¡estás imprimiendo un puntero en el documento! De hecho, estás imprimiendo el puntero a la primera posición del array numero.
- Poner todas las posiciones de los arrays contacte y numero a 0. Mi pregunta es: ¿por qué guardas 10 números en un array si sólo vas a coger el último y el resto los borras?
Además, si borras todos los números, ¡deberías darle el valor 0 a afegir!
También es curioso el tratamiento que haces del array de caracteres contacte. A veces lo tratar como una cadena de texto (como en la sección de código anterior) y otras lo tratas como un vector de cadenas de texto, como en el siguiente fragmento:
A no ser que los nombres tengan siempre longitud máxima de un carácter, deberías revisar esto.
¡Saludos!
A ver, me gustaría comentarte unas cosillas primero. Si estás programando en C++, has de tener en cuenta que has de incluir la librería cstdio, no stdio.h.
Por otro lado, no es necesario incluir la biblioteca iostream ya que no utilizas nada de ella.
¿Qué quieres decir con borrar exactamente? Permíteme copiarte el case 3 del bloque switch:
Código (cpp) [Seleccionar]
afegir = afegir -1;
printf("Guardando cambios....");
fp=fopen("telefons.txt","a");
fprintf(fp,"%s %d\n" ,contacte,numero);
printf("\nTots els canvis han sigut guardats");
fclose(fp);
for (int i=0;i<10;i++){ contacte[i]=0; numero[i]=0; }
break;
Lo que haces es:
- Decrementar el indicador de posición afegir.
- Guardar en el documento el nombre del contacto seguido de... un puntero Si pones "numero" a secas, ¡estás imprimiendo un puntero en el documento! De hecho, estás imprimiendo el puntero a la primera posición del array numero.
- Poner todas las posiciones de los arrays contacte y numero a 0. Mi pregunta es: ¿por qué guardas 10 números en un array si sólo vas a coger el último y el resto los borras?
Además, si borras todos los números, ¡deberías darle el valor 0 a afegir!
También es curioso el tratamiento que haces del array de caracteres contacte. A veces lo tratar como una cadena de texto (como en la sección de código anterior) y otras lo tratas como un vector de cadenas de texto, como en el siguiente fragmento:
Código (cpp) [Seleccionar]
printf("Introduce el numero : ");
scanf("%d", &numero[afegir]);
printf("Introduce el nombre del contacto : ");
scanf("%s", &contacte[afegir]);
afegir++;
break;
A no ser que los nombres tengan siempre longitud máxima de un carácter, deberías revisar esto.
¡Saludos!