• Sábado 14 de Diciembre de 2024, 11:53

Autor Tema:  Re: ayuda para escribir caracteres  (Leído 1750 veces)

novatilla

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: ayuda para escribir caracteres
« en: Lunes 10 de Marzo de 2003, 19:03 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: ayuda para escribir caracteres
« Respuesta #1 en: Lunes 10 de Marzo de 2003, 20:09 »
0
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:
Actual Generation oOo Quoyle oOo Remember: Free your mind

borca

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: ayuda para escribir caracteres
« Respuesta #2 en: Martes 11 de Marzo de 2003, 19:55 »
0
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

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: ayuda para escribir caracteres
« Respuesta #3 en: Viernes 14 de Marzo de 2003, 21:01 »
0
: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
  1.  
  2. /*Trabajo con datos capturados desde teclado y archivos.
  3. **utilizando descriptores de archivo
  4. **Elaborado por Juan Carlos Ruiz Pacheco.
  5. **Compilado con el djgpp 14-03-2003
  6. **[email]juank@007mundo.com[/email]
  7. */
  8. #include<stdio.h>
  9. #include<pc.h>
  10. #include <fcntl.h>
  11. #include <sys/stat.h>
  12.      
  13. int main()
  14. {
  15.   int archivo=NULL;
  16.   char caracter=NULL;
  17.   char cadena[255],nombrearchivo[255], aux[255];
  18.   int dato=NULL;
  19.   FILE *f=NULL;
  20.  
  21.   ScreenClear();
  22.   ScreenSetCursor(0,0);
  23.   memset(cadena,'',sizeof(cadena));
  24.   memset(nombrearchivo,'',sizeof(cadena));
  25.   memset(aux,'',sizeof(cadena));
  26.  
  27.   printf("Introduzca el nombre del archivo:");
  28.   gets(nombrearchivo);
  29.  
  30.   if((archivo=open(nombrearchivo,O_RDWR|O_TEXT|O_CREAT))>=0)
  31.   {
  32.     printf("annnIntroduzca un solo caracter para escribir en el archivo:");
  33.     caracter=getchar();
  34.     strcpy(aux,"El caracter digitado:");
  35.     write(archivo,aux,strlen(aux));
  36.     write(archivo,&caracter,sizeof(caracter));getc(stdin);
  37.  
  38.     memset(aux,'',sizeof(cadena));
  39.     printf("nIntroduzca un entero para escribir en el archivo:");
  40.     scanf("%d",&dato);
  41.     strcpy(aux,"nEl entero digitado:");
  42.     write(archivo,aux,strlen(aux));getc(stdin);
  43.     write(archivo,&dato,sizeof(dato));
  44.  
  45.     printf("nIntroduzca una cadena escribir en el archivo:");
  46.     gets(cadena);
  47.     strcpy(aux,"nLa cadena digitada:");
  48.     write(archivo,aux,strlen(aux));
  49.     write(archivo,cadena,strlen(cadena));
  50.     f=fdopen(archivo,"at+");
  51.     fflush(f);
  52.     fclose(f);
  53.     close(archivo);
  54.  
  55.     printf("nArchivo %s cerrado.",nombrearchivo);
  56.     printf("nPresione Enter para salir");
  57.     getch();
  58.     return(int) 1;
  59.   }
  60.   else
  61.   {
  62.     perror("nError al abrir el archivo.nPresione enter para terminar.");
  63.     getch();
  64.     return (int)0;
  65.   }
  66. }
  67.  
  68.  
Anexo ejecutable , por si alguien no puede compilar el codigo.
:lightsabre:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
ayuda para escribir caracteres
« Respuesta #4 en: Lunes 17 de Marzo de 2003, 13:54 »
0
:alien:
te anexom el mismo programa pero manejando apuntadores, esto para que a todos les quede claro la diferencia:

 
Código: Text
  1.  
  2. /*Elaborado por Juan Carlos Ruiz Pacheco.
  3. **Trabajo con datos capturados desde teclado y archivos.
  4. **Compilado con el djgpp 13-03-2003
  5. **[email]juank@007mundo.com[/email]
  6. */
  7. #include<stdio.h>
  8. #include<pc.h>
  9.  
  10. int main()
  11. {
  12.   FILE *archivo=NULL;
  13.   char caracter=NULL;
  14.   char cadena[255],nombrearchivo[255], aux[255];
  15.   int dato=NULL;
  16.  
  17.   ScreenClear();
  18.   ScreenSetCursor(0,0);
  19.   memset(cadena,'',sizeof(cadena));
  20.   memset(nombrearchivo,'',sizeof(cadena));
  21.   memset(aux,'',sizeof(cadena));
  22.  
  23.   printf("Introduzca el nombre del archivo:");
  24.   gets(nombrearchivo);
  25.  
  26.   if((archivo=fopen(nombrearchivo,"at+"))!=NULL)
  27.   {
  28.     printf("annnIntroduzca un solo caracter para escribir en el archivo:");
  29.     caracter=getchar();
  30.     strcpy(aux,"nEl caracter digitado:");
  31.     fwrite(aux,strlen(aux),1,archivo);
  32.     fputc((int)caracter,archivo);
  33.  
  34.     memset(aux,'',sizeof(cadena));
  35.     printf("nIntroduzca un entero para escribir en el archivo:");
  36.     scanf("%d",&dato);
  37.     strcpy(aux,"nEl entero digitado:");
  38.     fwrite(aux,strlen(aux),1,archivo);
  39.     fputc(dato,archivo);
  40.  
  41.     printf("nIntroduzca una cadena escribir en el archivo:");getc(stdin);
  42.     gets(cadena);
  43.     strcpy(aux,"nLa cadena digitada:");
  44.     fwrite(aux,strlen(aux),1,archivo);
  45.     fputs(cadena,archivo);
  46.  
  47.     fflush(archivo);
  48.     fclose(archivo);
  49.  
  50.     printf("nArchivo %s cerrado.",nombrearchivo);
  51.     printf("nPresione Enter para salir");
  52.     getch();
  53.     return(int) 1;
  54.   }
  55.   else
  56.   {
  57.     perror("nError al abrir el archivo.nPresione enter para terminar.");
  58.     getch();
  59.     return (int)0;
  60.   }
  61. }
  62.  
  63.  
:lightsabre:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io