hendrigo 0 Denunciar post Postado Junho 18, 2013 Boa tarde pessoal, estou com um problema básico. Tenho um arquivo .txt com essa entrada (q0, 1)->(q1, X, D);(q1, 2)->(q2, 2, D); e assim vai. Minha dúvida é, quero ler esses 'q0' '1' 'q1' 'X' 'D' e salvar numa estrutura, depois disso crio outra instancia dessa estrutura para salvar o segundo conjunto 'q1' '2' 'q2' '2' 'D' e assim vai. Mas não tive uma idéia para isso, é para um trabalho e tal, mas até agora não rolou. obs: eu tenho que saber que depois do ponto e vírgula, acaba a 1ª instrução. é como se ficasse assim as estruturas estrutura 1 estrutura 2 variável 1 = q0 var 1 = q1 var 2 = 1 var 2 = 2 var 3 = q1 var 3 = q2 var 4 = X var 4 = 2 var 5 = D var 5 = D eu tenho que 'ignorar' os ( ) - >, mas saber quem no ; acaba a 1 sentença obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Asskiller 4 Denunciar post Postado Junho 18, 2013 Voce quer ler (q0, 1)->(q1, X, D);(q1, 2)->(q2, 2, D); de um arquivo texto , correto ? Porem apenas ler o que esta dentro dos parênteses ? Compartilhar este post Link para o post Compartilhar em outros sites
hendrigo 0 Denunciar post Postado Junho 18, 2013 Voce quer ler (q0, 1)->(q1, X, D);(q1, 2)->(q2, 2, D); de um arquivo texto , correto ? Porem apenas ler o que esta dentro dos parênteses ? quase isso amigo, são de um arquivo .txt sim. na primeira entrada (q0, 1)->(q1, X, D), eu quero o ' qo 1 q1 X D ', isso eu vou copiar para 5 variáveis, uma para cada. repito o processo para a segunda entrada (q1, 2)->(q2, 2, D), pegando ' q1 2 q2 2 D ' e copiando para as variáveis. Essas variáveis são de um typedef que eu criei. obs: tenho que saber que no ' ; ' acaba a primeira entrada e assim sucessivamente Compartilhar este post Link para o post Compartilhar em outros sites
Asskiller 4 Denunciar post Postado Junho 18, 2013 são de um arquivo .txt sim. na primeira entrada (q0, 1)->(q1, X, D), eu quero o ' qo 1 q1 X D ', isso eu vou copiar para 5 variáveis, uma para cada. repito o processo para a segunda entrada (q1, 2)->(q2, 2, D), pegando ' q1 2 q2 2 D ' e copiando para as variáveis. Essas variáveis são de um typedef que eu criei. obs: tenho que saber que no ' ; ' acaba a primeira entrada e assim sucessivamente Manipulacao de Strings , na verdade voce nao ira armazenar em 5 variaveis , voce ira armazenar em 1 vetor e cada entrada em 1 campo do vetor. char vet[100] vet[0] = q0 vet[1] = 1; e assim vai. Irei ver o que eu consigo aqui e lhe passo. Compartilhar este post Link para o post Compartilhar em outros sites
hendrigo 0 Denunciar post Postado Junho 18, 2013 Manipulacao de Strings , na verdade voce nao ira armazenar em 5 variaveis , voce ira armazenar em 1 vetor e cada entrada em 1 campo do vetor. char vet[100] vet[0] = q0 vet[1] = 1; e assim vai. Irei ver o que eu consigo aqui e lhe passo. O problema é que são entradas desconhecidas, mas nesse 'padrão mesmo. Uma idéia seria então por isso em um vetor e ir associando às variáveis, dentro de um loop para as demais entradas. O problema é fazer isso, se puder ajudar, agradeço infinitamente. Compartilhar este post Link para o post Compartilhar em outros sites
Asskiller 4 Denunciar post Postado Junho 18, 2013 estrutura 1 estrutura 2 variável 1 = q0 var 1 = q1 var 2 = 1 var 2 = 2 var 3 = q1 var 3 = q2 var 4 = X var 4 = 2 var 5 = D var 5 = D Nao posso inserir tudo em apenas uma estrutura ? Exemplo apenas da leitura do arquivo e sua inicialização armazenando tudo em 1 variavel vetor com tamanho 40... que e o tamanho do todo. Nesse exemplo esta pegando tudo espaços em branco.E ele identificar q1 nao como uma strings e sim 2 caracteres. A leitura do arquivo ele lê CARACTERE POR CARACTERE , não é possivel ler strings....Entao essa junção teria que ser feita via código. Posso desenvolver mais depois , mais e bom voce pesquisar e tentar tambem....Assim como a adpatação da outra metade do arquivo para uma segunda variavel na estrutura.Que por hora nao pensei em um modo de fazer... Feito no visual studio #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> using namespace System; struct Read{ char vet[40]; }Ler; //ler (q0, 1)->(q1, X, D);(q1, 2)->(q2, 2, D); int leitura(void){ FILE *fp = NULL; int i=0; // quantidade de vetores char j; // loop de contagem de strings nos vetores char ler; // exibe os caracteres do arquivo na tela if(!(fp = fopen("ler.txt","r+"))){ return 1; puts("Arquivo Inexistente"); } else{ while (!feof(fp)){ /* Enquanto n�o se chegar no final do arquivo */ ler = getc(fp); /* Le um caracter no arquivo */ printf("%c",ler); /* e o imprime na tela */ } for(j=0; j < 40; j++){ rewind(fp); // re le o arquivo fscanf(fp,Ler.vet); // adiciona o conteudo do arquivo na matriz Ler.vet[j] = strlen(Ler.vet); // conta.... Ler.vet[j] = getc(fp); // adiciona na matriz printf("\nVet[%d]:%c",i+1,Ler.vet[j]); i++; } } fclose(fp); /* Fecha o arquivo */ return 0; } int main() { Ler.vet[40] = 0; leitura(); puts("\n"); system("pause"); return 0; } Veja um exemplo de retirando espaços em branco de uma string : http://www.geeksbr.com/2010/12/programacao-em-c-retirar-espacos-em.html Compartilhar este post Link para o post Compartilhar em outros sites
hendrigo 0 Denunciar post Postado Junho 18, 2013 obrigado Asskiller, amanha irei testar essa solução com mais calma, já quebrei muito a cabeça por hoje. Compartilhar este post Link para o post Compartilhar em outros sites