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

suzy

aonde coloco o ficheiro?

10 mensagens neste tópico

viva! :( tenho uma duvida algo "estupida".

fiz um programa que le os dados de um ficheiro texto (dados.txt), e coloca esses mesmos dados no ecra. o programa que fiz e este:

#include<stdio.h>
#include<string.h>


  int main(){
char st[100];
FILE *f;
int c,i=0;

if(((f=fopen("dados.txt","r"))==NULL)){
	printf(" erro ao abrir o ficheiro\n");
   
}
while((c=fgetc(f)!=EOF))
	if(c!='\n')
		  st[i++]=c;

  fclose(f);
  st[i]='\0';
  puts(st);
  
}

estou a utilizar o visual studio 2005 e como tal fiz um projecto, abri um source file e fiz este programa.

a minha duvida e aonde coloco o ficheiro dados.txt?? acho que ja coloquei em "todos os lados" dentro da pasta que tem este projecto e nada. nao me aparece nada no ecra.

alguem sabe porque?? o que estou a fazer de errado?

muito obrigada

:-[ :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estas a fechar o ficheiro na primeira iteracção. Tira o fclose para fora do ciclo while que já é capaz de dar qualquer coisa...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no projecto tens la uma directoria debug experimenta a colocar ai o ficheiro de dados

boas programacoes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:( :( :D so me aparece bonecos, tipo asteiriscos :dontgetit: devem ser os caracteres que estao no ficheiro?? :hmm: mas estao palavras no ficheiro "normais".

:wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja fizeste o que o hipnoted sugeriu ?

podes enviar um output do ficheiro ? assim seria mais facil entender o que e que nao estas a conseguir.

tb estas a usar o header string.h que neste caso nao te serve de nada, podes remove-lo, e verifica se o while nao esta a iterar mais de 100 vezes pois o teu buffer.

boas programacoes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:( sim , mas ainda me aparece mais "asteriscos"

aparece tipo isto

oooooooo (aparece tipo uma figura que parece uma cara de  pato, deve ser alguem caracter) :-[

prima qualquer tecla para terminar...

desculpa, mas as vezes e dificil exprimir  :-[

obrigada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja experimentaste a substituir a funcao fgetc por outra do estilo fgets e usares a funcao feof para detectar o final do ficheiro ?

boas programacoes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

experimenta colocar a variavel c em vez de ser um int ser um char.

pelo que li o fgetc devolve um unsigned char que e convertido para um int.

experimenta a colocar a variavel c com o tipo char e ver se isso resolve o problema.

boas programacoes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a minha duvida e aonde coloco o ficheiro dados.txt??

Colocas na pasta do projecto. Normalmente esta pasta é onde tens os ficheiros .c e .h

Estas a fechar o ficheiro na primeira iteracção. Tira o fclose para fora do ciclo while que já é capaz de dar qualquer coisa...

O fclose está fora do while, só o if e o seu bloco é que estão dentro. Ela não usou chavetas.

alguem sabe porque?? o que estou a fazer de errado?

O erro está na condição do while. Como tens:

	while((c=fgetc(f)!=EOF))

é equivalente a teres

	while( c = (fgetc(f)!=EOF) )

ou seja, c fica com o resultado da comparação que é 0 ou 1, porque a expressão é avaliada da direita para a esquerda.  Se em vez disso escreveres

	while( (c=fgetc(f)) != EOF )

vais ver que já obtens o conteúdo do ficheiro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:P viva malta

thanks a todos :P ja consegui ver o ficheiro no ecra  :P mto obrigada

:)este forum e o maximo :confused:

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