Sou novo no fórum do GUJ (é também meu primeiro fórum a frequentar), estou aprendendo a linguagem C na faculdade, porém, deparei-me com um problema.
Estou desenvolvendo um algoritimo que lê um determinado ponteiro que abre um arquivo TXT, quando executo o WHILE lendo este ponteiro e atribuo o valor do conteúdo a uma variável, ao sair do WHILE este valor é descarregado, ou seja, enquanto estou dentro do WHILE e executo o printf da variável, consigo ver o valor, mas quando saio do WHILE esta variável fica vazia.
Abaixo o código que estou usando:
Não consigo identificar a maneira correta, para ao sair do WHILE, a variável continuar com o valor carregado para que eu utilize no restante do algoritimo.
Quando o arquivo acabou, o valor retornado por getc é EOF mesmo, ou seja, o arquivo acabou e não faz sentido você tentar pegar mais nenhuma informação dele. Mas não entendi por que é que seu processamento não deva ser feito dentro do WHILE (quando o arquivo ainda não acabou).
M
matelucati
Olá entanglement,
Primeiramente obrigado pela ajuda, na verdade entendi seu ponto de vista, mas a minha idéia é que o processamento finalizasse dentro do while e depois, com a variável carregada com o resultado do processamento, eu pudesse utilizá-la em outro ponto do meu código.
Na verdade terei vários whiles abrindo alguns arquivos TXT e posteriormente, armazenando os resultados em variáveis, para em outra parte do código, fazer um if e tomar algumas decisões.
você esta pegando somente 1 caractere do texto e sobrescrevendo a variável... no final você esta imprimindo ou o ultimo caractere ou um caractere de espaço " "
você deve usar um "vetor de char" que em C isso é uma String
Obrigado pela dica, porém, tentei utilizar o código conforme demonstrado, mesmo assim a variável retornou vazia.
Entendi sua explicação, estou consultando o livro que tenho para entender melhor esta parte com vetores.
Para não ter problemas com o tamanho do que será colocado dentro da variável, criei a variável conforme código abaixo:
typedefchar*string;stringvar_ls_arq_entrada;
E no local onde faz o while, incluí o código que você mencionou, mas não funcionou.
Muito obrigado pela dica e pelo tempo disponibilizado, se testar algo que funcione e puder me avisar, agradeço.
[]s
Gustavo Matelucati
douglaskd
me desculpe agora ta testado rs, tinha esquecido o incremento do contador....
Muito obrigado por mais esta ajuda, vou testar o código agora no período da noite na faculdade.
Lhe envio as considerações, mas entendi o que você tentou explicar.
Realmente sem este contador, a posição que eu estava pegando era vazia.
Muito bom mesmo, assim que adaptar o código (e o mais importante, entender seu funcionamento) postarei aqui no fórum.
[]s
Gustavo Matelucati
M
matelucati
Boa noite douglaskd,
O código funcionou perfeitamente, fiz a adaptação em meu projeto e está ótimo.
Entendi o erro que estava cometendo ao depurar o exemplo que me enviou, realmente estava pegando uma posição vazia.
Excelente idéia.