• Martes 14 de Mayo de 2024, 10:22

Autor Tema:  Problema Al Escribir En Fichero  (Leído 1266 veces)

swingt81

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Problema Al Escribir En Fichero
« en: Martes 25 de Abril de 2006, 10:16 »
0
hola. estoy teniendo un problema con algo muy sencillo pero no lo resuelvo. a ver si me podeis echar una mano. tengo ke abrir un fichero de texto, no vacio, y escribir un caracter (por ejemplo una S mayuscula, codigo 83) al ppio de la 2ª linea. es una chorrada, creo q lo estoy haciendo bien, pero no funciona. este es el codigo:

void main(void){


   FILE *fichero;  
   int num;
   char linea[40];
   
   fichero=fopen("proba.inf","r+");    //el fichero existe y tiene datos, eh
   
   fgets(linea,40, fichero);        //leo la 1ªliena
                                                                                              
   
   
   num=83;
   fputc(num,fichero);
   fclose(fichero);


}

a ver q me podeis decir. gracias

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema Al Escribir En Fichero
« Respuesta #1 en: Martes 25 de Abril de 2006, 16:58 »
0
abrise el archivo en modo binario, para usarlo de forma adecuada con las funciones de texto abrelo así ( si mal no recuerdo)

Código: Text
  1.  fichero=fopen("proba.inf","rt+");
  2.  
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

dacap

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
    • http://www.davidcapello.com.ar/
Re: Problema Al Escribir En Fichero
« Respuesta #2 en: Viernes 28 de Abril de 2006, 05:06 »
0
Cita de: "swingt81"
tengo ke abrir un fichero de texto, no vacio, y escribir un caracter (por ejemplo una S mayuscula, codigo 83) al ppio de la 2ª linea. es una chorrada, creo q lo estoy haciendo bien, pero no funciona.
 
Pueden haber dos problemas:
1) Que en realidad quieras agregar el caracter. Tu código sobreescribe el primer caracter de la segunda línea, no lo agrega.
2) El tamaño del arreglo "linea" es muy pequeño como para alojar la primera línea completa (entonces el fputc modifica el caracter 40 de la primera línea). Te recomiendo utilizar un tamaño de "char linea[256];".

P/D: También podés usar fputc('S', fichero); que es mucho más comprensible que el código ASCII 83.

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Problema Al Escribir En Fichero
« Respuesta #3 en: Jueves 1 de Junio de 2006, 18:22 »
0
umm si lo que quieres es llegar a la segunda linea, no hagas una lectura asi.

 fgets(linea,40, fichero);  leera una linea hasta encontrar un espacio en blanco

mejor rastrea desde el principio (llendo al principio con un fseek) y luego muevete con un fgetc hasta encontrar el retorno de carro.

entonces si lo que quieres hacer es incrustar la s, lee con fread todo el archivo desde la linea 2 hasta el final, escribe la S y luego todo el archivo otra vez.