[C con Clase] Problema con manejo de archivos.

Steven Davidson steven en conclase.net
Jue Jun 14 21:32:01 CEST 2007


Hola Franco,

El pasado 2007-06-14 16:47:05, Franco escribió:

F> Hola, tanto tiempo, tengo un problema que me tiene realmente 
F> desconsertado, tengo el siguiente codigo:

A ver el código.

F> #include <stdio.h>
F> int main() {
F>     char* aux;
F>     char medio;
F>     FILE* srt;    /*crea un puntero a un archivo*/
F>     if((srt=fopen("tp7.srt","rw"))==NULL){    /*abre el archivo*/
F>         printf("no se pudo habrir el archivo \n");
F>         return 0;
F>         }
F>     fscanf(srt,"e",aux); /*trato de leer la letra "s"*/

Esto no tiene mucho sentido. Lo comento más abajo.

F>     printf("%s\n",*aux);

Como 'aux' no apunta a nada concreto y por tanto contiene "basura", aquí te provoca un error en tiempo de ejecución. Deberías crear memoria para que 'aux' apunte a ella o usar un array.

F>     getchar();
F>     fclose(srt);    /*cierra el archivo apuntado*/
F>     return 0;
F> }
F> ---------------------------------------------------------------------------------------------------------------------------------------------
F> lo que trato de hacer es simplemente leer la letra "e" dentro del el 
F> archivo, e imprimirla por pantalla.

Sigo sin entender exactamente lo que quieres hacer. Sospecho que quieres buscar si la letra 'e' existe en el fichero y luego imprimir tal letra. Sugiero hacer lo siguiente:

char aux[10240]="";  // 10 KB de almacenamiento
char letra=0;

fscanf( "%[^e]%c", aux, &letra );
if( letra )
  printf( "Encontrada la letra 'e': %c\n", letra );

Ahora 'letra' contendrá el carácter 'e'.

Si quieres los caracteres empezando con la primera aparición del carácter  'e', entonces haz lo siguiente:

char aux[10240]="";  // 10 KB de almacenamiento
char cadena[1024]="";

int n = fscanf( "%[^e]%s", aux, cadena );
if( 2 == n )
  printf( "La cadena que empieza por 'e' es \"%s\"\n", cadena );


Espero que esto sea lo que nos pediste.

Steven


Más información sobre la lista de distribución Cconclase