Enviado em 10/02/2012 - 11:04h
Oi Ricardo,Enviado em 10/02/2012 - 14:26h
Tá aqui o código que vc precisa.#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); }
Enviado em 10/02/2012 - 14:39h
Não testei o código, mas parece estar correto. O importante é que você resolveu por conta própria. ;-)#include <iostream> #include <string> #include <cstdlib> using namespace std; int main ( int argc, char *argv[] ) { string str(">gi|290467408|ref|NC_013896.1|"); size_t pos = str.find_last_of( '|', str.length()-2 ); cout << str.substr(pos) << endl; return EXIT_SUCCESS; } // ---------- end of function main ----------
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Solução rápida para o problema do Network Manager conectar mas não navegar
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
Microfone com ruído [RESOLVIDO] (5)
Interface Gráfica no Linux Mint 22.1. (4)
Ubuntu 25.04 não instala. (11)