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

[0] Índice de Mensajes

Ir a la versión completa