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

Cypher

Ler string sem scanf e gets ?

11 mensagens neste tópico

Boas possoal, estou a fazer um programa, e compilo em gcc, tenho que entregar o codigo sem erros e sem warnings...

tenho um problema, tenho que ler uma string e usando o gets para ler uma string, aparece me um warning . :S.

Um colega meu disse que dava para utilizar outra instruçao, alguem sabe ?

cumps [[]]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual é o warning que dá? Não será porque a função não é segura? Não tens disponível a gets_s?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes usar o fgets que não dá nenhum warning.

fgets(string,20,stdin);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes usar o fgets que não dá nenhum warning.

fgets(string,20,stdin);

é isso mesmo thx, o stdin, posso mesmo deixar estar assim.cumps...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

aconteceu me um imprevisto, nao dá para usar o fgets

mas sem guardar o valor do enter ??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

aconteceu me um imprevisto, nao dá para usar o fgets

mas sem guardar o valor do enter ??

Para isso podes, no final de leres, retirar o \n:

fgets(string,20,stdin);

int len = strlen(string);
string[len-1] = '\0';

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

aconteceu me um imprevisto, nao dá para usar o fgets

mas sem guardar o valor do enter ??

Pois, é o "problema" do fgets. Faz como o Hipnoted disse. Eu só colocava um if para ver se o ultimo caracter da string é mesmo um \n. Porque se leres de um ficheiro em não tivesse um \n na ultima linha, a string lida não tinha \n.

É uma precaução...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É boa ideia. Basta que receba mais de 20 caracteres e já fica sem \n no fim.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, há algum problema em especial com o scanf?

Se não houver

char str[5];
scanf("%4[^\n]",str);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, há algum problema em especial com o scanf?

Se não houver

char str[5];
scanf("%4[^\n]",str);

Não te esqueças de limpar o buffer de entrada...

scanf("%*[^\n]"); scanf("%*c");

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