Hola MVeros. Tengo que crear un programa que haga lo siguiente: el primer parámetro es un char y el 2º es el nombre del fichero, de tal manera que con la función strchr busque la primera coincidencia en el fichero de texto con ese char. Después de eso, imprimir todas las líneas restantes. Yo he escrito lo siguiente:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
int main(int argc, char *argv[]){
/* Variable auxiliar */
int i = 0;
/* Cargamos el caracter que es el segundo argumento en un char */
// char c = &argv[1];
char c = 'h';
char cad[MAX_LEN];
/* Abrimos el fichero y lo abrimos en modo lectura */
FILE *f = NULL;
f = fopen(argv[2], "r");
/* Para evitar posibles crashes */
if(argc<3){
printf("ERROR: No hay suficientes argumentos");
exit(1);
}
if(f==NULL) {
printf("ERROR: No se puede abrir el archivo.\n");
exit(1);
}
fgets(cad, MAX_LEN, f);
while(strchr(cad, c)==NULL){
fgets(cad, MAX_LEN, f);
i++;
}
printf("Numero de linea donde aparece la primera coincidencia con strchr: %d\n\n", i);
printf("STRCHR: %s\n", strchr(cad, c));
while(fgets(cad, MAX_LEN, f)!=NULL){
printf("%s\n", cad);
fgets(cad, MAX_LEN, f);
cad[0] = '\0';
}
return 0;
}
Tengo 2 problemas. El primero, la asignación de argv[1] al char c (está comentado más arriba en el código) y la función fgets no me coje todas las líneas que debería. Me explico, mi fichero 'info.txt' es así:
olahola
ola
ola
ola
ola
... y el char con el que trabajo es h. Me debería imprimir parte del primer string y después todas las demás, pero sólo me imprime 2 veces 'ola'. Alguien me puede echar una mano?
Saludos y gracias por adelantado.