Ir ao conteúdo
  • Cadastre-se

Programar em C - Abrir arquivo de texto


Visitante

Posts recomendados

Bom, eu estou fazendo um programinha sobre regressão linear. Basicamente o que está dando errado é que, eu devo ler uma tabela que têm 3 linhas.

A primeira linha me indica a quantidade de pontos do gráfico (n - que nesse caso é 10)
A segunda linha são os pontos em x, que eu devo ler por um vetor x[n], e a terceira são o pontos em y que leio por um vetor y[n].

 

Mas o meu n abre um valor de lixo, e já não consigo fazer nada a partir daí. Vou colocar a parte do código em que abri o arquivo:

 

int n, i;

FILE*tabela; //Ponteiro que guarda o endereço do arquivo
tabela= fopen("tabela.txt","r");
fscanf (tabela, "%d", &n);
printf("%d \n\n",n);
double x[n], y[n]
for (i=0; i<n; i++)
fscanf(tabela, "%f", &x[n]);
printf("%f \n\n",x[n]);
etc...
 
Eu coloquei um print no n para ver o que estava de errado, e vi daí que estava imprimindo um número aleatório, e os vetores também não leem as linhas.
O que estou fazendo de errado??
Desde já obrigada!
Link para o comentário
Compartilhar em outros sites

Eu estou supondo.
OK  você abriu o arquivo ("tabela.txt") , agora neste ponto

for (i=0; i<n; i++)     fscanf(tabela, "%f", &x[n]);

O loop for (i=0; i<n; i++) é para preencher n - números do x[?] tenho n como contador;

Agora sim, será que você cometeu engano em colocar n, ao invés devidamente i.

Ficando o algoritmo for (i=0; i<n; i++)  Assim;

for ( i = 0; i < n; i++)      fscanf(tabela, "%f", &x[i]);// i é o subscrito, modificado por loop.
Link para o comentário
Compartilhar em outros sites

atlos, eu modifiquei o programa para ver se ele estava abrindo, caso não que me aparecesse uma mensagem mas está abrindo. Você acha que eu estou abrindo o arquivo de maneira errada? Se tiver alguma sugestão para mim....

 

Mauro, a tabela está escrito assim: 

10
4.0    4.2    4.5    4.7    5.1    5.5    5.9    6.3    6.8    7.1
102.56    113.18   130.11   142.05   167.53   195.14   224.87   256.73  
 
Eu quero que n armazene o primeiro número, que é o número de pontos que eu tenho, nesse caso n=10
A partir daí eu preciso de dois vetores, x[n] e y[n] para armazenar os pontos das outras linhas quando eu vou declarar as variáveis.
 
Mas pra início, eu coloquei para aparecer o valor de "n" na tela e ele não está lendo 10, está lendo um número aleatório de 4 dígitos (que eu imagino ser lixo) e  logo, também não lê os vetores da tabela.
Link para o comentário
Compartilhar em outros sites

Mauro, a tabela está escrito assim: 

10
4.0    4.2    4.5    4.7    5.1    5.5    5.9    6.3    6.8    7.1
102.56    113.18   130.11   142.05   167.53   195.14   224.87   256.73  
 
Eu quero que n armazene o primeiro número, que é o número de pontos que eu tenho, nesse caso n=10
A partir daí eu preciso de dois vetores, x[n] e y[n] para armazenar os pontos das outras linhas quando eu vou declarar as variáveis.
 
Mas pra início, eu coloquei para aparecer o valor de "n" na tela e ele não está lendo 10, está lendo um número aleatório de 4 dígitos (que eu imagino ser lixo) e  logo, também não lê os vetores da tabela.

 

Eu vou escrever em pseudocódigo estou se depurador para testar;

 

numero tamanho_da_matriz;

arquivo meu_arquivo;

 

meu_arquivo = abrir("texto.txt", "r");

 

se meu_arquivo é 0

tela houve problema ao tentar abrir texto.txt;

sair sair_com_erro;

 

se lerarquivo meu_arquivo, mascara, &tamanho_da_matriz != 1 

tela houve erro ao tentar ler dados dentro do arquivo;

sair sair_com_erro;

 

numero matriz_x[ tamanho_da_matriz ];

numero i;

durante i = 0; i < tamanho_da_matriz ; i++

{

  se lerarquivo meu_arquivo, mascara, &matriz_x[ i ] != 1 

  tela houve erro ao tentar ler dados dentro do arquivo;

  sair sair_com_erro;

}

 

Passa para código C, e copile esse algoritmo poste os resultados.

Link para o comentário
Compartilhar em outros sites

Eu comecei tudo de novo, e criei a condição de mostrar se o arquivo está sendo aberto ou não.

Agora está apontando mesmo que o arquivo não está abrindo... por que não está abrindo? Alguém consegue me ajudar? Só o comecinho, pra abrir o arquivo eu coloquei:

 

int main(){
 
int n;
FILE *entrada;
entrada = fopen("tabela1.txt", "r");
fscanf(entrada, "%d", &n);
if((entrada = fopen("tabela1.txt","r")) == NULL)
  {
    printf("Erro ao abrir arquivo!!!\n");
      }
      else
      printf("Arquivo aberto");
fclose(entrada);
 
}
 
Será que é a codificação do arquivo de texto? Eu salvei em ANSI e o formato .txt mesmo...
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...