Programación General > C/C++
Re: ayuda para escribir caracteres
(1/1)
novatilla:
hola a todos
tengo un pequeño problema con un ejercicio de C en linux
abro un fichero, lo leo pero a la hora de escribir los caracteres me dice que si kiero paella o bokerones.....
lo leo con read pq tengo k utilizar descriptores de ficheros
lo he intentao con printf, fprintf.... %s. %c, %d....pero nada....lo mas que he hecho es k con %d me devuelva un 1
ayuda amigos.......ahhhhhhhhhh
Quoyle:
Hola,:) con lo poco que cuentas en un poco difícil ayudarte, ¿por qué no envías el código, o la parte que no te funciona del mismo?
Un saludo, esperamos poder ayudarte.:D:alien:
borca:
estas seguro que no hay ningun problema cuando abres del fichero??
recuerda definir un puntero tipo fichero
par ex:
#include <stdio.h>
FILE *fd;
fd = fopen( "nomFichero", modoAcces);
/* modos de acceso:
r : lectura (debe existir)
w: escritura
a: fichiero a añadir (debe existir)
*/
espero que te sirva de ayuda :p
JuanK:
:alien:
ok, a continuacio tienes un ejemplo de escritura de variables a un archivo en lenguaje c, utilizando descriptores de archivo.
El programa es compilado en el djggp, en otros copiladores probablemante tengan que modificar las siguientes estas lineas:
Borrar:
#include<pc.h>
ScreenClear();
ScreenSetCursor(0,0);
en algunos casos deberan modificar los flags de la funcion open
Modificar:
archivo=open(nombrearchivo,O_RDWR|O_TEXT|O_CREAT))
ya que no todos los compiladores utilizan los mismos.
--- Código: Text --- /*Trabajo con datos capturados desde teclado y archivos.**utilizando descriptores de archivo**Elaborado por Juan Carlos Ruiz Pacheco.**Compilado con el djgpp 14-03-2003**[email]juank@007mundo.com[/email]*/#include<stdio.h>#include<pc.h>#include <fcntl.h>#include <sys/stat.h> int main(){ int archivo=NULL; char caracter=NULL; char cadena[255],nombrearchivo[255], aux[255]; int dato=NULL; FILE *f=NULL; ScreenClear(); ScreenSetCursor(0,0); memset(cadena,'',sizeof(cadena)); memset(nombrearchivo,'',sizeof(cadena)); memset(aux,'',sizeof(cadena)); printf("Introduzca el nombre del archivo:"); gets(nombrearchivo); if((archivo=open(nombrearchivo,O_RDWR|O_TEXT|O_CREAT))>=0) { printf("annnIntroduzca un solo caracter para escribir en el archivo:"); caracter=getchar(); strcpy(aux,"El caracter digitado:"); write(archivo,aux,strlen(aux)); write(archivo,&caracter,sizeof(caracter));getc(stdin); memset(aux,'',sizeof(cadena)); printf("nIntroduzca un entero para escribir en el archivo:"); scanf("%d",&dato); strcpy(aux,"nEl entero digitado:"); write(archivo,aux,strlen(aux));getc(stdin); write(archivo,&dato,sizeof(dato)); printf("nIntroduzca una cadena escribir en el archivo:"); gets(cadena); strcpy(aux,"nLa cadena digitada:"); write(archivo,aux,strlen(aux)); write(archivo,cadena,strlen(cadena)); f=fdopen(archivo,"at+"); fflush(f); fclose(f); close(archivo); printf("nArchivo %s cerrado.",nombrearchivo); printf("nPresione Enter para salir"); getch(); return(int) 1; } else { perror("nError al abrir el archivo.nPresione enter para terminar."); getch(); return (int)0; }} Anexo ejecutable , por si alguien no puede compilar el codigo.
:lightsabre:
JuanK:
:alien:
te anexom el mismo programa pero manejando apuntadores, esto para que a todos les quede claro la diferencia:
--- Código: Text --- /*Elaborado por Juan Carlos Ruiz Pacheco.**Trabajo con datos capturados desde teclado y archivos.**Compilado con el djgpp 13-03-2003**[email]juank@007mundo.com[/email]*/#include<stdio.h>#include<pc.h> int main(){ FILE *archivo=NULL; char caracter=NULL; char cadena[255],nombrearchivo[255], aux[255]; int dato=NULL; ScreenClear(); ScreenSetCursor(0,0); memset(cadena,'',sizeof(cadena)); memset(nombrearchivo,'',sizeof(cadena)); memset(aux,'',sizeof(cadena)); printf("Introduzca el nombre del archivo:"); gets(nombrearchivo); if((archivo=fopen(nombrearchivo,"at+"))!=NULL) { printf("annnIntroduzca un solo caracter para escribir en el archivo:"); caracter=getchar(); strcpy(aux,"nEl caracter digitado:"); fwrite(aux,strlen(aux),1,archivo); fputc((int)caracter,archivo); memset(aux,'',sizeof(cadena)); printf("nIntroduzca un entero para escribir en el archivo:"); scanf("%d",&dato); strcpy(aux,"nEl entero digitado:"); fwrite(aux,strlen(aux),1,archivo); fputc(dato,archivo); printf("nIntroduzca una cadena escribir en el archivo:");getc(stdin); gets(cadena); strcpy(aux,"nLa cadena digitada:"); fwrite(aux,strlen(aux),1,archivo); fputs(cadena,archivo); fflush(archivo); fclose(archivo); printf("nArchivo %s cerrado.",nombrearchivo); printf("nPresione Enter para salir"); getch(); return(int) 1; } else { perror("nError al abrir el archivo.nPresione enter para terminar."); getch(); return (int)0; }} :lightsabre:
Navegación
Ir a la versión completa