
foxbit3r
(usa Solaris)
Enviado em 10/02/2012 - 14:26h
Tá aqui o código que vc precisa.
Porém o site do viva o linux remove o caracter barra null e escreve TEXTO no lugar.
Basta substituir que vai funcionar.
Eu mudei o nome de algumas variaveis e o nome do arquivo que fica os dados.
Codigo abaixo:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Obs colocar o valor correto aqui, pois o site do viva o linux */
/* substitui o valor por {TEXTO } */
#define BARRA_NULL '{TTEXTO}'
int main(){
char str1[50];
char *str2;
char *pt;
int countPos,pos;
// abrindo arquivo onde estao as strings a serem lidas //
FILE *fp;
fp = fopen ("dados.txt", "r");
while(fgets(str1,50,fp)){
/* ignore linha que nao comecam com o caractere desejado */
if(str1[0] != '>')
continue;
/* localizando a posicao do caractere desejado */
pos = countPos = 0;
pt = strchr(str1,'|');
while((pt != NULL) && (countPos<3)){
pos = pt-str1;
pt = strchr(pt+1,'|');
countPos++;
}
/* pegando o tamanho da string apos ter localizado a ocorrencia desejada */
pt = &str1[pos];
while(str1[pos]!= BARRA_NULL){
pos++;
}
/* copiando dados para um novo string */
str2 = (char *)malloc(pos+1);
if(str2 == NULL){
fprintf(stderr,"Erro na alocao de memoria");
exit(1);
}
strncpy(str2,pt,pos);
str2[pos+1]= BARRA_NULL;
printf("%s",str2);
free(str2);
}
fclose(fp);
}