C não está aceitando strings [RESOLVIDO]

1. C não está aceitando strings [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 26/03/2013 - 14:45h

Bom recentemente me mudei do sabayon kde para o sabayon xfce, e uso como ide o code::blocks, hoje fui fazer um programinha, porém ele não está lendo strings, nem com scanf e nem com gets. Obs.: eu adicionei as bibliotecas string. e strings.h no código. Será que é falta de alguma dependência no sistema? se for qual?


  


2. MELHOR RESPOSTA

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 26/03/2013 - 15:01h

Olá.

Já utilizou um __fpurge(stdin) antes de tentar capturar dados do teclado, para descarregar o buffer?

Ex:


#include<stdio.h>
#include<stdio_ext.h> //Importa __fpurge

int main ( void )
{
char chave = 0;

puts("Entre com uma tecla qualquer...");

//Descarrega buffer de entrada antes de capturar
__fpurge(stdin);
//Captura da entrada e armazena em $chave
chave = getchar();

printf("Voce digitou: %c\n", chave);

return 0;
}



3. Re: C não está aceitando strings [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/03/2013 - 14:55h

Tem como você postar as saídas de erros e o código que você usou?


4. Re: C não está aceitando strings [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 26/03/2013 - 15:04h

bom aqui via "olhômetro" nenhuma saída de erro, via compilador também não, segue o código:


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

main()
{
int opc;
char op1[2];
printf("\n>>Você está mo modo gráfico ou modo texto? \n>>[1] - Gráfico\n>>[2] - Texto\n");
scanf("%d",&opc);
if(opc==1)
{
system("xset b 0");
system("xset b off");
system("modprobe -r snd-pcsp");
system("cp /etc/modules.d/blacklist.conf /etc/modules.d/blacklist.conf.old");
system("echo blacklist snd-pcsp >> /etc/modules.d/blacklist.conf");
system("mv /lib/modules/3.8.0-sabayon/kernel/sound/drivers/pcsp/snd-pcsp.ko /lib/modules/3.8.0-sabayon/kernel/sound/drivers/pcsp/.tchau");
system("mv /lib/modules/3.7.0-sabayon/kernel/sound/drivers/pcsp/snd-pcsp.ko /lib/modules/3.7.0-sabayon/kernel/sound/drivers/pcsp/.tchau");
printf("\nDeseja reiniciar o computador? [s/n]\n");
gets(op1);
if((op1[0] == 's') || (op1[0] == 'S'))
{
printf("\nTchau beep!\n");
system("reboot");
}
}
else
{
system("setterm -blength 0");
system("setterm -blength off");
system("modprobe -r pcspkr");
system("cp /etc/modules.d/blacklist.conf /etc/modules/blacklist1.conf.old");
system("echo blacklist pcspkr >> /etc/modules.d/blacklist.conf");
system("mv /lib/modules/3.8.0-sabayon/kernel/drivers/input/misc/pcspkr.ko /lib/modules/3.8.0-sabayon/kernel/drivers/input/misc/.tchau");
system("mv /lib/modules/3.7.0-sabayon/kernel/drivers/input/misc/pcspkr.ko /lib/modules/3.7.0-sabayon/kernel/drivers/input/misc/.tchau");
printf("\nDeseja reiniciar o computador? \n");
gets(op1);
if((op1[0] == 's') || (op1[0] == 'S'))
{
printf("\nTchau beep! \n");
system("reboot");
}
}
}



5. Re: C não está aceitando strings [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/03/2013 - 15:36h

Olhando assim também não vi coisa alguma.

Já verificou nas configurações de diretórios do Codeblocks?

Você consegue compilar ele no gcc, direto do terminal, sem o Codeblocks?


6. Re: C não está aceitando strings [RESOLVIDO]

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 26/03/2013 - 16:54h

era isso mesmo tinha que limpar o buffer de teclado.


7. Re: C não está aceitando strings [RESOLVIDO]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 26/03/2013 - 17:13h

Feito!

Essa é célebre, já passei por essa.

No Windows só um fflush já resolve, mas no Linux é um pouco mais embaixo.

fflush e fpurge(3) não funcionam bem.
Só consegui utilizando __fpurge mesmo.

Abraço.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts