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

luiscastro

passar informação do ficheiro para o programa

4 mensagens neste tópico

tenho o seguinte código:

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

int j=0,resposta,i,ch;

typedef struct {
    int numero;
    float nota;
    char nome[50];
}ALUNOS;

ALUNOS aluno[100];

void escrita(int j, int resposta, int i)
{
    FILE*fp;
    char lixo;
    j=0;
    do{
        printf("Introduza o numero do Aluno: \n");
        scanf("%d", &aluno[j].numero);
        printf("Introduza o nome do Aluno: \n");
        lixo=getchar();
        scanf("%s", &aluno[j].nome);
        j++;
        printf("Quer Continuar? Sim=1/Não=0\n");
        scanf("%d", &resposta);
    }while(resposta == 1);
    fp=fopen("pautas.txt", "a+");
    for (i=0;i<j;i++)
    {
        fprintf(fp, "Aluno[%d].numero= %d\n", i, aluno[i].numero);
        fprintf(fp, "Aluno[%d].nome= %s\n", i, aluno[i].nome);
    }
    fclose(fp);
}

void leitura(int i, int j)
{
    FILE *fp;
    i=0;
    fp=fopen("pautas.txt", "r");
    do
    {
        printf("Aluno[%d].numero=%d\n", i, aluno[i].numero);
        printf("Aluno[%d].numero=%s\n", i, aluno[i].nome);
        i++;
    }
    while(ch!=(!feof));
    fclose(fp);
}



main()
{
      escrita(j,resposta,i);
      leitura(i, j);
      system("pause");
}

-> a função void escrita basicamente recebe o nome e numero e copia para o ficheiro.

-> a função void leitura le o conteudo do ficheiro.

So k se compilarem o codigo podem xegar a um ficheiro tipo este:

Aluno[0].numero= 0

Aluno[0].nome= 3

Aluno[1].numero= 0

Aluno[1].nome= 2

Aluno[0].numero= 0

Aluno[0].nome= uis

Aluno[0].numero= 1

Aluno[0].nome= a

Aluno[1].numero= 2

Aluno[1].nome= b

Aluno[0].numero= 0

Aluno[0].nome= uis

e supostamente se o codigo estivesse correto devia apresentar isto:

Aluno[0].numero= 0

Aluno[0].nome= 3

Aluno[1].numero= 0

Aluno[1].nome= 2

Aluno[2].numero= 0

Aluno[2].nome= uis

Aluno[3].numero= 1

Aluno[3].nome= a

Aluno[4].numero= 2

Aluno[4].nome= b

Aluno[5].numero= 0

Aluno[5].nome= uis

esta situação segundo calculo deve-se ao facto k o codigo nao esta a carregar a informação do ficheiro para o programa corretamente e este pelo facto de nao encontrar informação anterior apenas trabalha com a informação dada desde a abertura do mesmo...

pesso k corrijam o meu codigo...

e muito importante para o meu trabalho

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

void leitura(int i, int j)
{
    FILE *fp;
    i=0;
    fp=fopen("pautas.txt", "r");
    do
    {
        printf("Aluno[%d].numero=%d\n", i, aluno[i].numero);
        printf("Aluno[%d].numero=%s\n", i, aluno[i].nome);
        i++;
    }
    while(ch!=(!feof));
    fclose(fp);
}

isto é mm a tua função que faz a leitura do ficheiro ou enganaste-te ao fazer o post?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu tirei o codigo da net....eu tb axu xtranho ser um printf e nao um fprintf...penso que é a isso que te referes..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Presumo que ele se está a referir ao facto de as funções *printf servirem para escrever, e não para ler, e que o ficheiro foi aberto para leitura.

E já agora, que ch não é afectado em lado nenhum.

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