Ir ao conteúdo

Problema em ler string de um arquivo.txt


kira911

Posts recomendados

Postado

então, consigo gravar normalmente a string no arquivo. Mas quando resgato esses dados com o fscanf ele nao mostra o nome inteiro que foi digitado.

Exemplo:

Uso um algoritimo pra escrever no arquivo e outro para ler. Vamos supor que escrevi o nome Carlos Alberto. Tipo no arquivo.txt fica escrita Carlos Alberto normalmente, mas quando uso um outro algoritimo para ler esse nome, nao mostra o nome inteiro apenas o que estiver antes do espaço. Nesse exemplo ele só mostra Carlos. Abaixo estão os algoritimos de escrita e de leitura. Me ajudem por favor !!

Escrita:


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

FILE*arquivo;
char nome[80];

int main()
{
arquivo=fopen("Arquivo.txt","w");
printf("Digite seu nome.");
gets(nome);
fprintf(arquivo,nome);
fclose(arquivo);
system("pause");
}

Leitura:


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

FILE*arquivo;
char nuks[80];

int main()
{
arquivo=fopen("Arquivo.txt","r");
fscanf(arquivo,"%s",nuks);
printf("%s\n",nuks);
system("pause");
}

Postado

Isso ocorre pois a função fscanf trata espaços e quebras de linha como o final de uma entrada de dados, portanto a função lê o primeiro nome, e quando encontra um espaço ela termina a leitura da string.

Para corrigir isso você pode usar a função fgets, que vai terminar de ler a string quando encontrar uma quebra de linha ou já tiver lido a quantidade de caracteres passados como parâmetro.

O código da leitura ficaria assim:


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

FILE*arquivo;
char nuks[80];

int main()
{
arquivo=fopen("Arquivo.txt","r");
fgets(nuks, 79, arquivo);
printf("%s\n",nuks);
system("pause");
}

Espero ter ajudado.

Postado
Isso ocorre pois a função fscanf trata espaços e quebras de linha como o final de uma entrada de dados, portanto a função lê o primeiro nome, e quando encontra um espaço ela termina a leitura da string.

Para corrigir isso você pode usar a função fgets, que vai terminar de ler a string quando encontrar uma quebra de linha ou já tiver lido a quantidade de caracteres passados como parâmetro.

O código da leitura ficaria assim:


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

FILE*arquivo;
char nuks[80];

int main()
{
arquivo=fopen("Arquivo.txt","r");
fgets(nuks, 79, arquivo);
printf("%s\n",nuks);
system("pause");
}

Espero ter ajudado.

Era isso mesmo ! Muito obrigadooO... !!!

Arquivado

Este tópico foi arquivado e está fechado para 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!