-
Posts
1.752 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que vangodp postou
-
O único que while(if, for, etc) quer saber é se um valor é verdadeiro ou falso. Na programação 0 é considerado falso, e qualquer outro valor é verdadeiro... incluído números negativos. se ver algo como while( 0 == 0 ) vai dar como resultado true, porque zero é igual a zero, isso gera um true(resultado diferente de zero). Como já lhe explicou Lucca, por enquanto x não valer 0 isso continuará rodando.
-
C É possível aprender C e Java ao mesmo tempo
vangodp respondeu ao tópico de Luiz Paulo Escobar em C/C#/C++
acho que sim.... eu aprendi C e C++ >_< adicionado 1 minuto depois A forma mais fácil de aprender é programando tipo mão na massa. Ponha em pratica tudo o que for aprendendo. -
não está permitido fazer os trabalhos de outros(regras do forum), somente tirar duvidas concretas. Mostre o que leva feito e comente aquelas partes que tiver maior duvida.
-
É simples... você n pode compilar com o compilador que traz codeblocks por default porque o tipo de compilador é de 64 bits e allegro 4.4.2 é de 32 bits. Solução... 1º buscar allegro 4.4.2 compilada para 64 bits 2º usar um compilador de 32 bits... é dizer, você precisa instalar um compilador de 32bits nesse codeblocks, ent4ao poderia compilar. 3º Usar alguma biblioteca mais atualizada como sfml que ja é orientada a objetos(Perfeito para C++). adicionado 1 minuto depois O unico compilador que encontrei que funciona com essa versão de allegro é esse->https://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win32/Personal Builds/mingw-builds/8.1.0/threads-posix/sjlj/i686-8.1.0-release-posix-sjlj-rt_v6-rev0.7z/download adicionado 12 minutos depois também encontrei algo sobre um "switch" que em teoria permite um compilador x64 e x86 compilar aplicações de 32 bits. Tal switch é o -m32 que tem que ser inserido em "Other compiler options". porém não consegui fazer funcionar, se alguem souber que ponha aqui.
-
isso ta acontecendo porque seu codeblocks literalmente não enxerga o tal arquivo. você precisa declarar a pasta chamad include que ta dentro do allegro que você baixou no path do sistema, porque nessa pasta esta o allegro.h. adicionado 0 minutos depois ou indicar para o codeblocks onde estão a tal allegro adicionado 0 minutos depois Que tutorial você ta seguindo?
-
audio fica falhando e o jogo buga
vangodp respondeu ao tópico de Yasmim Beatriz em Placas de som e áudio onboard
pode tentar restaurar o sistema >_< -
Como seu exemplo era um jogo, saiba que para jogos não se usa fgets, suheush Sim é possivel fazer isso, não com fgets claro... (Ou sim?>_< Quem sabe). É só por um getch dentro de um um if com a função kbhit() como parâmetro. Se não aporrear a tecla passa batido. Ainda quer o exemplo? hsuehsuheush adicionado 1 minuto depois Ja tive metido muito nisso de joguinhos de console shuehsuehu
-
você leu o que o isrnick falou? você fechou o arquivo q #include <stdio.h> #include <stdlib.h> #define TAM 2 typedef struct Dados { int idade; char nome[50]; char rua[30]; }Dados; int main() { //Abrimos arquivo modo escritura(arraza com arquivos anteriores) FILE *f = fopen ( "arquivo.txt", "w" ); if( f == NULL ){ perror("Erro ao tentar abrir arquivo.txt em modo leitura extendida\nMotivo" ); getchar();//pausa exit(-1); } Dados lista[TAM]; for ( int i = 0; i < TAM; i++ ) { printf ( "idade %d:", i+1 ); scanf ( "%d", &lista[i].idade ); } fwrite ( lista, sizeof ( Dados ), 2, f ); fclose ( f ); //Fechou!!! //abriu em modo leitura(Inicio do arquivo) f = fopen ( "arquivo.txt", "r" ); if( f == NULL ){ perror("Erro ao tentar abrir arquivo.txt em modo leitura extendida\nMotivo" ); getchar();//pausa exit(-1); } Dados d; //Lendo primeiro dado printf ( "Ver Idade 1:\n" ); fread ( &d, sizeof ( Dados ), 1, f ); printf ( "%d\n", d.idade ); //Lendo segundo dado printf ( "Ver Idade 2:\n" ); fread ( &d, sizeof ( Dados ), 1, f ); printf ( "%d\n", d.idade ); fclose ( f ); } uando fez fclose(f);. Tem que abrir ele
-
Em um loop talvez? suesuehsuh
-
Perdoe mas realmente já estou irritado. Porque aqui não existe MULTI-THREAD, mas você se empenha em por travas. E como quer chamar? Conforme wikipedia, definição de buffer é: Buffer (ciência da computação) - Uma região de memória temporária utilizada para escrita e leitura de dados; Qual problema há em chama-lo de buffer? Mas terá a mais adequada.... e não acredito que seja nem fgets nem getc. Em todos os casos e em todas as soluções o enter vai entrar no buffer. Se eu não posso propor nenhuma solução você também n pode. você explica as coisas desde um ponto de vista mais tecnico. Talvez dado a que você está acostumado em ver certos tipos de problemas a diário você tenha soluções muito mais "hardcores". Mas o que você não pode fazer é chegar em um post de um estudante iniciante e queimar a cabeça dele com threads etc, isso está fora de contesto, não vai ajudar em nada. Os threads certamente o aluno vai aprender dentro de 3 ou mais anos suheuheus. Acho que aqui, todos os mais veteranos sabemos que não devemos usar um simples scanf como entrada. Porque se um usuário pode destruir um programa o fará... e vai faze-lo logo de entrada. E se um usuario destruir seu programa, você ainda vai ter que agrader...tipo: Cliente: O programa fez boom! Programador: Obrigado por me mostrar que sou um péssimo programador, obrigado por me ensinar que tenho que fazer as coisas direito.XDD A resposta correta para uma entrada impecável é um conjunto de soluções... especificares, valor de retorno do scanf, validação de dados, etc. Uma coisa é certa... admiro sua paciência. Se você fosse meu professor eu ia te encher o saco o dia todo shuehseuhsuh Eu termino aqui... não vou debater mais nada, porque esse tema já faz tempo que deixou de ser útil para o usuário. Ainda to esperando o tal exemplo do PeekConsoleInput(). Esse sim me interessa ver. Obrigado pela paciência e seu tempo. Em outros tópicos continuaremos com as guerras. sheusheu
-
Não se vai aprender muito mais sheuhseuh porque o tema vai parar longe ainda ja vai ver shuesueh adicionado 2 minutos depois Então ganha o arf... acho que ele sempre tem razão. Claro que conseguimos... Absolutamente todos aqui conseguimos. E você também vai conseguir
-
Arfnet, conforme sua grande experiência... Qual a solução mais adequada ao problema do buffer??? Oh gran arf! Responda só isso. Quero ver... Não! Acho que a essa altura todos queremos ver sua solução perfeita para o tema do LIXO no buffer de entrada. E deixa de baboseiras como consumiu o buffer, multi-thread, e outras mil, que vamos subindo o índice a cada momento.
-
? Fico em dúvida se está falando sério. Chamar uma variável local de buffer e usar scanf() para ler dela não mostra nada. você ta de sacanagem né? Não mostra o que vei...? É que acaso tem que mostrar algo? Funciona, é brilhante pela simplicidade. Por muito que entre o enter este buffer não da erros, é funcional, por muito que que a você não lhe agrade ta aí mais uma forma de ler desde o buffer. Mas para que preciso disso??? Ja não viu o 10, não ficou satisfeito???? Que precisa mais?? WTF Do que você ta falando vei??? Que single-thread?? Ralmente n lhe entendo? Faz tempo que conversa ta se distanciando do tema atual. Folclórico? você sim ta fazendo um folclore aqui... Para você só o que você posta tem valor, não enxerga outras soluções, somente a sua. E de fato ainda deu uma solução(Queria verlaXD), só se enfoca sobre se eu entendi o que você escreve, e isso que já lhe respondi 500 vezes. E que importa?? Não... não tem o mesmo problema... funciona perfeitamente, e você sabe. É uma de tantas mais que existe, toma ou deixa. Vei... vai catar coquinho com os multi-thread. Onde você ta vendo multi-thread aqui? É vontade de causar polêmica n é? Testando...? Ou testudo?
-
Sim entendi... E você...? Entendeu que funciona também o fgets+sscanf? Acho que não preciso explicar a diferença entre ler desde stdin e ler desde string. Não? porque sei você sabe tudo isso, e por isso sabe que funciona também adicionado 30 minutos depois Vou lhe mostrar o que ta no buffer sem usar essa função peek //fgets+sscanf #include <stdio.h> int main(){ char buffer[100]={0}; //Inicializamos todas as casinhas com um valor qualquer-99 por exemplo for ( int i=0; i<100; i++) { buffer[i] = -1; } //lendo sem erros fgets(buffer,100,stdin); //Mostrando para arfneto onde ta o enter for ( int i=0; i<20; i++) { printf("posicao:%d->%d", i, buffer[i]); if ( buffer[i] == 10 ){ puts("<-Aqui ta seu <ENTER>XD De fato n usei \\n nesta linha e saltou"); }else{ putchar(10);//<-10 >_< } } return 0; } adicionado 31 minutos depois Ainda acha que n4ao entendi?
-
Acho que você ainda n entendeu... A definição de lixo você pode ver aqui->https://pt.wiktionary.org/wiki/lixo Mas o ponto mais importante é "coisas inúteis". Em nosso caso \n ou <ENTER> como você mostra é lixo. Em C/C++ se usa analogias para muitas coisas. Quando se referi a limpar buffer você imagina uma faxineira lá, de escovinha na mão, jogando o lixo fora? Não!!!! É pura analogia arfneto. Se a analogia é "LIMPAR O BUFFER", a pergunta é "do que", o que está lá é lixo mesmo que você n goste dessa analogia. Tendeu? Sei como funciona o buffer. Acho que com o anterior deixei claro o que quero dizer com lixo né. Eu sim estou lendo. Claro que vão rodar... Por que você diz que não? adicionado 4 minutos depois você quase é mais velho que a linguagem shuehsuhe. você nem usa C não é? certamente você usa C# shuehs. ou pode que C++
-
entendi... Pera ai que vou fazer um test adicionado 15 minutos depois O salário você precisaria calcular ele antes de mandar para o arquivo? adicionado 16 minutos depois Por exemplo Docente recebe 2500$ por cada hora. Quando o programa pedi o salário isso deveria ser calculado antes de mandar valor algum para o arquivo. adicionado 19 minutos depois adicionado 26 minutos depois Esses dados como salário, acho que pode omitir... porque isso pode ser calculado na hora de mostrar... tipo se trabalha 8 horas por dia multiplica por 30 e dai sai salário...(falo de forma simplificada para ter uma ideia). No seu programa você pode por float horaDocente = 2500; dai na hora de imprimir pode ser salario = funcionario.horasTrabalhadas * 30; adicionado 31 minutos depois Seu programa tem alguns outros erros que acho que é critico. Por exemplo... struct Funcionario* p = ( struct Funcionario * ) malloc ( sizeof ( struct Funcionario ) ); aqui você ta reservando 1 só elemento do tamanho de 1 struct Funcionario. Se o que você quer é um array de Funcionarios o correto seria struct Funcionario* p = ( struct Funcionario * ) malloc ( sizeof ( struct Funcionario ) * X ); Onde o X é o numero de elementos do array. adicionado 36 minutos depois E outro problema maior ainda é que ao chamar a função menu ( funcionario, n ); você passa um n que nem deu valor inicial... logo escolhemos 1 no menu e repassamos esse n para IncerirFuncionario, porém sem um valor definido. Esse valor n depois é usado para int y que somado a i você usa para o limite do for mais abaixo for ( i = 0; i < y; i++ )... <---Qual o valor desse y???? adicionado 37 minutos depois realmente você precisa que seu programa leia um array??? Acho que dava para fazer sem arrays sei lá.
-
qual problema você tem?
-
Eu sei... mas ela não está livre de erros também. Acho que n existe nada infalivel. Sei lá... essa também era minha forma idônea, até que vi o vídeo. heheh Desde logo o que uso sempre é %*c... nunca me falhou. Acho que a melhor forma é uma combinação de coisas. Um dia eu afino heheh
-
Sinta-se livre de modificar/melhorar como quiser... se quiser aportar algo será muito bem vindo. Talvez sejamos capazes de buscar uma solução para o maldito buffer de uma vez por todas sheusheush Eu não uso essa função.. somente queria que você observara o que passa se por essa flush sua antes do imput. Eu também uso ela algumas vezes. adicionado 1 minuto depois Eu n falei que o modo de limpar o buffer nesse video fosse o mais indicado, mas ele encontrou um caso que pode dar falho. adicionado 13 minutos depois proponho: #include <stdio.h> #include <stdarg.h> void miscanf ( const char *format, ... ) { char buffer[BUFSIZ]; fgets ( buffer, 100, stdin ); va_list args; va_start ( args, format ); vsscanf ( buffer, format, args ); va_end ( args ); } int main() { char str1[100]; char str2[100]; miscanf("%s", str1); /*Ler palavras */ miscanf("%[^\n]%*c", str2);/*Ler frases(espaços)*/ printf("%s\n", str1); printf("%s\n", str2); return 0; } adicionado 17 minutos depois função 100% livre de problemas de entrada... Se tomar o conselho de declarar char buffer[100] tal como @isrnick falou char buffer[BUFSIZ]; melhor ainda shuehseu. E se alguém quiser melhorar mais ainda seja bem vindo.
-
Espero que sim... de toda forma indiquei uma leitura. E sempre é bom ver o ponto de vista de outros usuários. adicionado 6 minutos depois Querem saber qual é a forma mais idonea de ler o buffer para mim? #include <stdio.h> int main(){ char string[100]; char buffer[100]; fgets(buffer,100,stdin); sscanf(buffer,"%s",string); printf("Cadena: %s",string); return 0; } Um exemplo: //fgets+sscanf #include <stdio.h> int main(){ char buffer[100]; char palavra[100]; int n; char frase[100]; fgets(buffer,100,stdin); sscanf(buffer,"%s",palavra); fgets(buffer,100,stdin); sscanf(buffer,"%d", &n); fgets(buffer,100,stdin); sscanf(buffer,"%[^\n]", frase); printf("%s\n%d\n%s\n\n", palavra, n, frase); return 0; } Pode incluso ser montado alguma função com isso se quiser facilitar. adicionado 7 minutos depois Em fim... é só uma a mais de tantas hehehe.
-
você é um cara bem estudado, entende bem das coisas, como funcionam de forma interna etc. Tem uma boa escritura, é alguém bem indicado para explicar essas coisas. Em troca eu n sirvo para isso... sou bem o contrario heheh
-
Eu não tenho problemas com buffer... Quem precisa é @Andrah Sinta-se livre de fazer um bonito tutorial desses que você tem paciência para fazer... Ja que você entrou em tecnicismos agora n vai ficar no meio n é? adicionado 0 minutos depois Isso pode ajudar a muita gente, e de passo, talvez, seja possivel aprender algo novo hoje. adicionado 1 minuto depois E uma coisa... \n no buffer para mim é lixo, diga o que diga.
-
até que você aprenda a limpar o buffer corretamente ponha um fflush antes de ler qualquer string adicionado 0 minutos depois fflush ( stdin ); scanf ( "%s%*c", funcionario.categoria ); adicionado 2 minutos depois Mas realmente sou totalmente contra de fflush, e nunca recomendo isso. Termine seu programa e depois tente usar qualquer outra forma... você ja viu que alguns companheiros indicaram algumas formas, e qualquer delas é melhor que fflush. Se seu professor está recomendando isso talvez não seja um bom tutor.
-
também n aconselho muito o uso desse flush @isrnick >_<. O porque você pode ver aqui:
-
Ainda estou dando uma olhada. adicionado 0 minutos depois mas se conseguiu limpar o buffer ao menos tomar os dados e criar o arquivo você ja deve ter conseguido
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