
alvinegro
(usa Ubuntu)
Enviado em 19/03/2013 - 16:09h
Pessoal, estou fazendo uma função de "Search" de um arquivo de texto. Esse arquivo contém basicamente esse conteúdo:
"User: joao saiu do sistema. Às Sat 2013-03-09 17:32:48 BRT
User: joao entrou no sistema. Às Sat 2013-03-09 17:34:26 BRT
User: joao saiu do sistema. Às Sat 2013-03-09 17:34:29 BRT
User: admin entrou no sistema. Às Sat 2013-03-09 17:36:16 BRT
User: joao entrou no sistema. Às Sat 2013-03-09 17:36:45 BRT
User: joao saiu do sistema. Às Sat 2013-03-09 17:37:17 BRT
User: maria entrou no sistema. Às Sat 2013-03-09 17:37:34 BRT"
A minha função esta procurando a string, por exemplo: joao, porém ele imprimi até a 3ª LINHA e não pula o admin e imprimi a 5ª e a 6ª... aí está a minha função:
int search(){
char nome[20], str[100];
FILE *fp;
fp = fopen("log.txt","r");
if (!fp)
exit(1);
printf("Introduza a string para pesquisa: ");
setbuf(stdin, NULL);
if(fgets(nome,sizeof(nome),stdin)){
nome[strlen(nome)-1]=nome[strlen(nome)];
while(fgets(str,sizeof(str),fp)!=NULL)
{
for(int i=0;i==NULL;i++){
if(strstr(str,nome)!=NULL){
printf("%s", str);
}else{
printf("Nenhum usuario com este nome foi encontrado!!\n");
return 0;
}
}
fclose(fp);
return 0;
}
}
Alguma ideia?