Ir ao conteúdo

Posts recomendados

Postado
#include <stdio.h>
#include <stdlib.h>
int main()
{
	FILE *p;
	char nome[27], idade[5], arq_nome[30];
	char c;
	
	printf("\nArquivo de entrada: ");
	gets(arq_nome);
	
	if ((p = fopen(arq_nome, "r")) == NULL)
	{
		printf("\nErro ao abrir o arquivo %s!", arq_nome);
		exit(1);
	}
	
	printf("\nImprimindo dados do arquivo: %s\n", arq_nome);
	while (!feof(p)) //enquanto não encontra o fim do arquivo
	{
		c = 0;
		//Leitura sincronizada..
		fscanf(p, "%s", nome); //salta a palavra: 'nome:'
		fgets(nome, 27, p);	
		fscanf(p, "%s", idade); //salta a palavra: 'idade:'
		fgets(idade, 5, p);
		printf("\nNome: %s\nIdade: %s", nome, idade);
		
		/*Caso alguma parte se perca, e o ponteiro no arquivo fique parado
		em alguma parte do registro, esta rotina fara a sincronizacao.*/
		while(c != '$')
		{
			c = getc(p);
			if (feof(p)) break;	
		} 
	}
	fclose(p); //fecha o arquivo
}

Bom dia, pessoal. Preciso criar um programa que leia uma lista de nomes e idades de um arquivo
texto. alguém poderia me ajudar em que estou errando? Preciso que imprima uma lista, mas só está imprimindo o primeiro nome e a primeira idade...

  • Curtir 1
Postado

@jpaulofsa    aqui seu código não está funcionando ,  ficou faltando concatenar o nome do arquivo ,  e esse while no final não precisa e  ele está causando erro , e seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
int main(){
	FILE *p;
	char nome[27], idade[5], arq_nome[30];
	char c;

	printf("\nArquivo de entrada: ");
	gets(arq_nome);
	strcat(arq_nome,".txt");/* precisa unir o tipo de arquivo */

	if ((p = fopen(arq_nome, "r")) == NULL)
	{
		printf("\nErro ao abrir o arquivo %s!", arq_nome);
		exit(1);
	}

	printf("\nImprimindo dados do arquivo: %s\n\n", arq_nome);
	c = 0;
	while (!feof(p)) //enquanto não encontra o fim do arquivo
	{
		//c = 0;
		//Leitura sincronizada..
		fscanf(p, "%s", nome);  /* pega o nome de nome  */
		printf("%d %s ",c+1,nome);     /* imprime o nome nome  */
        fgets(nome, 27, p);     /* pega o nome          */
        printf("%s",nome);      /* imprime o nome       */
		fscanf(p, "%s",nome);   /* pegar o nome idade   */
		printf("  %s ",nome);     /* imprime o nome idade */
		fscanf(p, "%s",idade);  /* pegar a idade        */
        printf("%s\n",idade);   /* imprime a idade      */
        c++;
		/*Caso alguma parte se perca, e o ponteiro no arquivo fique parado
		em alguma parte do registro, esta rotina fara a sincronizacao.*/
		/*while(c != '$')
		{
			c = getc(p);
			if (feof(p)) break;
		}*/
	}
	fclose(p); //fecha o arquivo
	printf("\n\n\n");
	return 0;
}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...