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.
Solventado
¿Qué quieres decir con borrar exactamente?
Borrar el contenido de la fila 'x' , lo que harias con un telefono vamos.. Seleccionar un nombre, y borrar esa fila, pero primero quiero que me salga lo de añadirlos.
Permíteme copiarte el case 3 del bloque switch:
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!
Ciertamente ya lo hago, porqué cada vez que vuelve al menu, tengo inicializado a 0 "afegir"
bool in_sortir=false; //boolea case 2
FILE *fp;
int espais=1;
//case 1, guarda numero i nom de contacte , variables
int afegir=0;
int numero[10];
char contacte[10];
No no, lo que he visto que, previamente deberia leer el documento a ver si contiene algun numero/nombre, y guardarlos en el array, y a partir de ahí, mirar si quedan huecos disponibles para añadir nuevos numeros. Si, está a 10 porqué en principio solo se deberían poder incluir 10 numeros, pero ahora mismo es algo "relativo" ya que busco que al menos me guarde 2 en el documento.
Así a "grosso modo", al programa yo le digo de añadir tantos numeros como quiera/pueda , y entonces, los guardo (o no). Si los decido guardar, deberian incluirse en el .txt , si quito el programa , se pierden los datos. De 1 en 1 ya he visto que si lo hace, pero a la que uso 2 o 3, siempre me guarda el ultimo.
Si, al "guardar" ya he visto que solo guardo uno, pero el problema es que si usaba el for (que verás más abajo), me petaba ..
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:
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!
si, prové de incluirlo mediante un bucle for, pero "petaba" a la hora de añadirlos, hice un
for (int i=0;i<=afegir;i++){ fscanf("%s %d", contacte[i], numero[i]}
Esta noche me lo reviso todo y te comento a ver como me queda.
durasno, por ahora estructuras no me piden, pero gracias por el aporte! En principio el programa debo hacerlo llano, sin funciones ni demás, con lo "básico de lo básico", es más que nada para "trabajar" los fscanf, fopen, fclose y el feof.