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

migg

String e os espaços

6 mensagens neste tópico

O problema é o seguinte ao escrever o Nome por exemplo:

Miguel Ferreira

em vez de Pedir a Morada passa logo para o curso

mas se escrever

MiguelFerreira

o programa Já pede de seguida a Morada

O que faço para resolver o problema

#include<stdio.h>
#include<stdlib.h>
#include <io.h>
main()
{

FILE *fp;

int NumerodoAluno[5],CodigoPostal;
char Nome[50],Morada[50],Curso[50],Localidade[20];


fp=fopen("test", "r");

printf("\nNumero do Aluno:\n");
fscanf(stdin, "%d",  &NumerodoAluno); 
printf("\nNome do Aluno:\n");
fscanf(stdin, "%s",  Nome);
printf("\nMorada:\n");
fscanf(stdin, "%s",  Morada);
printf("\nCurso:\n");
fscanf(stdin, "%s",  Curso);
printf("\nCodigo Postal:\n");
fscanf(stdin, "%d",  &CodigoPostal);
printf("\nLocalidade:\n");
fscanf(stdin, "%s",  Localidade);

fclose(fp); 

system("Pause");
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é porque tens o fscanf para ler apenas uma string, ou seja, um conjunto de caracteres. Uma solução é no ficheiro de teste arranjares um "separador" de nome, que quando é recebido indica que chegaste ao fim do nome, e no programa fazeres um ciclo de fscanf's até encontrares o separador, ou então se tiver apenas dois nomes (este tem o senão de ter SEMPRE que ter os dois nomes), é em vez de fscanf(stdin, "%s",  Nome); usares fscanf(stdin, "%s %s",  Nome);

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ou então fazes

fscanf(stdin, "[^\n]", Nome)

assim ele lê tudo até encontrar um '\n'!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, mas isso só funciona se cada dado estiver numa linha, se em cada linha estiver uma única informação, isso pode não funcionar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, mas isso só funciona se cada dado estiver numa linha, se em cada linha estiver uma única informação, isso pode não funcionar.

certo. se for esse o caso, pode substituir o '\n' por outro caracter qualquer que esteja a separar os campos.

há um artigo muito bom sobre isto na wiki!

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