WHILE em ANSI-C - retorna valor vazio  XML
Índice dos Fóruns » Outras Linguagens
Autor Mensagem
matelucati
What is classpath?

Membro desde: 20/11/2010 17:43:10
Mensagens: 8
Offline

Olá,

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.

Agradeço se alguém puder ajudar-me,

Muito obrigado,

[]s

Gustavo Matelucati
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

http://www.cplusplus.com/reference/clibrary/cstdio/getc/

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).
matelucati
What is classpath?

Membro desde: 20/11/2010 17:43:10
Mensagens: 8
Offline

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.

Obrigado,

[]s

Gustavo Matelucati
douglaskd
GUJ Ranger
[Avatar]

Membro desde: 04/07/2010 00:51:49
Mensagens: 839
Localização: Campinas - SP
Offline

olha isso:

var_ls_arq_entrada = getc(fp_le_conf_cam_entrada);

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

como ficaria:





tenta isso ae...não testei
matelucati
What is classpath?

Membro desde: 20/11/2010 17:43:10
Mensagens: 8
Offline

Olá douglaskd, boa tarde!

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:


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
GUJ Ranger
[Avatar]

Membro desde: 04/07/2010 00:51:49
Mensagens: 839
Localização: Campinas - SP
Offline

me desculpe agora ta testado rs, tinha esquecido o incremento do contador....

segue código completo

matelucati
What is classpath?

Membro desde: 20/11/2010 17:43:10
Mensagens: 8
Offline

Olá douglaskd,

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
matelucati
What is classpath?

Membro desde: 20/11/2010 17:43:10
Mensagens: 8
Offline

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.

Grato,

[]s


Gustavo Matelucati
 
Índice dos Fóruns » Outras Linguagens
Ir para:   
Powered by JForum 2.1.8 © JForum Team