Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hendrigo

ler e salvar strings/char

Recommended Posts

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

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

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

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

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
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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.