[ Foro de C ]
¡Hola!
Voy algo más retrasado que Roberto rrs en el mismo ejercicio de la página 93.
Estoy tratando de crear el fichero, pero cuando lo voy a compilar me aparece el siguiente error:
Línea 81 [Warning] passing arg 1 of fputs makes pointer from integer without a cast.
Sé que mis males se arreglarían poniendo el teléfono como char, pero quiero saber cómo actuar en caso de números.
El S.O. es XP y el compilador DEV-C++.
He definido telefono en el struct ficha como unsigned int y char textemp[10]. El extraño símbolo ante ficha[i].telefono es el ampersand.
.............................
puts("Escribe la poblacion");
gets(ficha[i].poblacion);
fputs(ficha[i].poblacion,fichero);
fputs("\n",fichero);
puts("Escribe el telefono");
gets(textemp);
sscanf(textemp,"%ud",&ficha[i].telefono);
linea 81 fputs(ficha[i].telefono,fichero);
fputs("\n",fichero);
...............................
¿Dónde está el error?
Saludos.
¡Hola!
Me respondo yo mismo, por si a alguien le interesa saber la solución.
Tras muchas vueltas y pruebas, al final lo he conseguido poniendo:
puts("Escribe la poblacion");
gets(ficha[i].poblacion);
fputs(ficha[i].poblacion,fichero);
fputs("\n",fichero);
printf("Escribe el telefono\n");
gets(textemp);
sscanf(textemp,"%10u",&ficha[i].telefono);
fprintf(fichero,"%10u",ficha[i].telefono);
fputs("\n",fichero);
Saludos.
Así es. Si usas un dato numérico para el teléfono, no puedes guardar con "fputs" sino con "fprintf", porque no es una cadena.
Aun así, un consejo: para los teléfonos se suele preferir usar cadenas en vez de números, porque así te da el juego de poder usar espacios, paréntesis, ceros a la izquierda, etc.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)