• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

dario1133

Ler FIcheiro de texto

8 mensagens neste tópico

gostava que me ajudassem na seguinte duvida..

tenho um ficheiro x.txt com os seguintes dados:

matricula:QA-12-12

entrada:12:12:12

saida: 21:12:12

se eu quizer ler apenas (QA-12-12)(12:12:12)(21:12:12)

posso ler da seguinte maneira??:

fscanf(fpx,"%s,%d:%d:%d,%d:%d:%d\n", matricula, hi, mi, si, hf, mf, sf);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que aconteceu quando experimentaste? :D

Suponho que não funcionou ... mas tás lá quase.

O teu scanf lê, para `matricula`, a string "matricula:QA-12-12"; depois tenta ignorar uma vírgula, mas como não há vírgula no input, ele pára sem assignar valor às variáveis hi, mi, si, hf, mf, e sf.

Além disso, precisas de passar ao scanf o endereço das variáveis e não o seu valor.

Experimenta assim:

fscanf(fpx, "matricula:%8s entrada:%d:%d:%d saida:%d:%d:%d", um, &hi, &mi, &si, &hf, &mf, &sf);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O 8 é o nº de caracteres da matrícula e o "um" é a string onde a vais guardar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O teu scanf lê, para `matricula`, a string "matricula:QA-12-12"; depois tenta ignorar uma vírgula, mas como não há vírgula no input, ele pára sem assignar valor às variáveis hi, mi, si, hf, mf, e sf.

Pára sem assignar? As in, without assigning? =)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o fscanf (e as outras funções da mesma família) devolve p número de atribuições que fez.

Se, no teu caso, o fscanf não devolver 7, é porque houve um erro:

sete = fscanf(fpx, "matricula:%8s entrada:%d:%d:%d saida:%d:%d:%d", um, &hi, &mi, &si, &hf, &mf, &sf);
if (sete != 7) {
  /* houve um erro no scanf */
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora