[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