Ir ao conteúdo
  • Cadastre-se

vangodp

Membro Pleno
  • Posts

    1.752
  • Cadastrado em

  • Última visita

Tudo que vangodp postou

  1. vangodp

    Ajuda

    prove :#define limpatela system("cls") Quando você define uma "macro", é como si você tivesse copiando e colando esse texto "system("cls");" no lugar que você escreveu "limpatela;". porém note que você colocou um ponto e vírgula depois do limpatela, o compilador acha que você quer por de nome ao ponto e vírgula de limpatela, e ainda para isso faltaria um espaço entre limpatela e o ponto e vírgula(';'). Em outras palavras o programa acha que você quer fazer limpatela = ';' mas não deixou espaço entre limpatela e ';', por isso o erro. Ele esta dizendo que não encontra um espaço entre o nome da macro que é "limpatela" e o que é a ação da macro que é "system("cls")". Tire o ponto e vírgula de limpatela porque, o ponto e vírgula nós colocamos ele na hora de criar a sentença. Em macros você não tem que por ponto e vírgula na hora de criar a macro. Valeu? Que acontece si você criar uma macro com ponto e vírgula e depois na hora de chamar "limpatela", você por outro ponto e vírgula já que é o natural? Por isso nao devemos por ';' em macros. Troque "#define limpatela; system("cls");" por "#define limpatela system("cls")" e somente ponha ponto e vírgula depois de chamar "limpatela" cada vez que você quiser limpar a tela dentro da sua função main, ou outra qualquer. Ou prove fazer o que ja te recomendou o usuário @dyegolierrt, que é fazer uma função chamada limpar() por exemplo, e ponha o system dentro. O ponto e vírgula usamos para dizer que terminamos uma sentença, e somente devemos colocar na hora de criar sentenças ok. Então lembre: -Não colocamos ponto e vírgula em macros. É errado fazer: #define foo; bar; O correto é fazer: #define foo bar -Coloque o ponto e vírgula somente dentro das funções na hora de "limpar a tela". Sorte.
  2. Samuel, você pode tanto ler inteiros como chars no seu scanf, porém si você si decidir por chars você deve fazer sua comparação com chars. Com chars: #include <stdio.h>#include <stdlib.h>#include <string.h>int main () { char estado; int s = 1; //Saudações printf ( "Ola tudo bem? S/N\n" ); scanf ( "%c", &estado ); estado = tolower( estado ); //daqui sempre vai sair letra pequena if ( estado == 's' ) { printf ( "Que otimo!\n" ); } if ( estado == 'n' ) { printf ( "Que pena!\n" ); } return 0;} E com inteiros: #include <stdio.h>int main () { int estado; int s = 1; //Saudações printf ( "Ola tudo bem? 1=Sim/2=Nao\n" ); scanf ( "%d", &estado ); //escolha numeros 1 ou 2, e nao letras s nem n if ( estado == 1 ) { printf ( "Que otimo!\n" ); } if ( estado == 0 ) { printf ( "Que pena!\n" ); } return 0;}
  3. usa a função strstr(str1, str2). Ela vai buscar str2 em str1, si encontrar ela vai devolver um ponteiro que é a posição onde a palavra começa, si não devolve null. Exemplo: #include <stdio.h>#include <string.h>int main () { int i; char frase[] = "Um simples string aqui"; char *palavra; //Esse ponteiro vai apontar aonde a palavra que voce que r buscar começa, si a palavra nao existir el vai conter null palavra = strstr ( frase, "lol" ); if ( palavra == NULL ) { printf ( "A palavra nao existe." ); return 1; } else { i = 0; printf ( "Palavra encontrada: " ); while ( palavra[i] != ' ' ) { printf ( "%c", palavra[i] ); i++; } } return 0;}
  4. vangodp

    Ajuda com arquivos txt

    efetivamente só lê uma kkk deverias por el fscanf em um loop para ir lendo até o fin do arquivo: #include <stdio.h>#include <stdlib.h>int main (){ FILE* entrada; entrada = fopen("entrada.txt", "r"); if ( entrada == NULL ){ perror("Erro: "); return 1; } FILE* saida; saida = fopen("saida.txt", "w"); if ( saida == NULL ){ perror("Erro: "); return 1; } int a, b, c, d, e, contador = 1; while ( fscanf(entrada, "%i %i %i %i %i", &a, &b, &c, &d, &e) != EOF ){ fprintf(saida, "linha [%d] = %d, ", contador++, a+b+c+d+e); } fclose(saida); fclose(entrada); getchar(); return 0;} Seu programa faz exatamente o que você lhe pediu. >_<
  5. simplesmente você consegue estourar a pilha causando o que se denomina um "stack overflow". A pilha é limitada, e o sistema operativo vai emitir um mensagem quando isso suceder. O tamanho da pilha ronda os 2 megabytes, uns compiladores permitem mais que outros, porém não saberia te dizer o tamanho que tem. Isso é claro que se pode averiguar, reservando chars e imprimindo o resultado, a cada char reservado, um byte reservado.Então seria fazer algo tão simples como total = total + char e imprimir o total, antes do programa estourar o codeblocks vai pausar ele, então ai você sabe quantos chars você pode reservar e o tamanho total da sua pilha. A pilha pode ser auterada, porém não recomendo fazer isso por que pode falhar em outros computadores. Pode que para provar isso você tenha que usar uma função recursiva.
  6. Uma ideia a sugerir é tokenizar o texto(contar, separar, etc). De uma olhada nesse programa: #include <stdio.h>#include <string.h>int main () { char str[] = "c:\\p1\\p2\\p3\\p4\\file.txt"; char * pch; pch = strtok ( str, "\\" ); while ( pch != NULL ) { printf ( "%s\n", pch ); // pode guardar cada pasta em um string aqui(matriz) pch = strtok ( NULL, "\\" ); } return 0;} si você quiser modificar esse programa, você poderia por exemplo separar cada texto e guardar em uma matriz para logo fazer verificações. Por exemplo você obteria algo como: matriz[100][30] ={ {"c:"}, {"pasta1"}, {pasta2}, {"pasta3}, {"arquivo.txt"} }; com isso você poderia fazer comparações, por exemplo, si indicamos que comece a contar de C: então o programa começa a "tokenizar"(contar) desde a primeira pasta. ou seja matriz[1][0], ainda podemos usar strstr por exemplo, para saber si o arquivo termina em ".txt", ou usar strcmp para saber si é o disco "c:". Em esses casos nós não contamos como pasta(profundidade). while(lol){.... if(strcmp(matriz[x], "c:") == 0){ //É o disco c: e não uma pasta. Nao contamos, nao fazemos nada }else if ( strstr( matriz[x], ".txt" )==NULL ){ /*busca si na palavra contem".txt" que significa que é um arquivo, si devolve null é que não encontrou nada ou seja, é uma pasta ou o disco C:*/ //É um arquivo e não pasta. }else{ /É uma pasta profundidade++; } ... } claro que é de muito pouca ajuda , somente quero mostrar a ideia. Si quiser algo mais elaborado posso tentar fazer algo, porém com fica a dica. Si tiver problemas com isso diga aqui e faremos algo ok?
  7. Vish, lascou! Eu não tenho muita experiência com sockets não. porém tudo é servidor ou cliente, ou incluso ambos. Ou você tem um só servidor que serve vários clientes, ou a rede deve ser descentralizada e cada cliente atua como servidor e cliente ao mesmo tempo, quando um cliente se conecta a essa rede então ele pode receber "pacotes", quando ele se conectar, ele esta registrado(on), si não esta inativo(off), nesse caso existem nodos, cada computador pode ser un nodo que contem uma lista de pessoas ativas. É como fazer uma ligação, você deve saber a quem tem que chamar primeiro antes de falar, você não pode ligar para um numero que não esta nessa red, por isso existem os servidores, podemos enviar a informação ao servidor e estar seguros de que o destinatário o receberá ainda que meu pc esteja desconectado pois o servidor sempre vai estar on. Na pratica posso apenas dizer pouco sobre tudo isso, já que não me dedico muito a socks, é um tema que ainda tenho pendente. XD Si você estiver interessado estude os sockets, e teoria de redes, é realmente incríveis tudo o que você pode fazer com sock.
  8. O asm é legal, porém é complicado, faça como ver melhor, o acho que seria mais a modo de curiosidade mesmo, por que tudo o que você for fazer mesmo é melhor em outros linguagens hoje em dia. Em C você pode usar "troços" em asm, isso eu não sei fazer. Utilizam mais para otimizar trechos de código problemáticos.
  9. como assim vai se desligar? Não entendo. você quer saber si depois de abrir um arquivo o programa se fecha? Nesses casos que eu coloquei sim, porém você pode por isso em loopes, ou com algum menu, etc, depende de você e o que você quer fazer >_<. você pode fazer os arquivos descargar no pc da pessoa, o arquivo e depois executar si você quiser, porém não sei a utilidade que você quer dar, praticamente as opções são quase ilimitadas, com C ou C++ você pode fazer "tudo". É lógico que tudo o que for aberto deva existir né antes, outra coisa é que seu programa ponha lá o que for executado ou ja esteja anteriormente. kkk
  10. O stdafx já pode conter o include iostream, si clicar nele você pode ver o que contem. Si tiver o iostream no stdafx não faça outro include, simplesmente faça o using namespace antes do main. Primeiro que Warning não são erros, o que te esta dizendo o primeiro warning(C4627) é que o seu include foi ignorado por que já existia um criado anteriormente(dentro do stdafx), então o programa te esta avisando essa "repetição". Confira dentro do stdafx para corroborar. Deixe sempre o stdafx antes de todos os demais includes, e ponha dentro dele, os includes que mais se repitam em todos os arquivos. Esse arquivo facilita ao ter muitos includes, para que você não tenha que estar pondo uma montão de includes separados que pode chegar a ser bem irritante, você só incluí o stdafx e pronto. porém o using namespace std você vai ter que por sim o sim em cada arquivo, si nao vai ter que por o espaço de nome std:: adiante de cout. Nao serve por o name space dentro do stdafx. Error C2065 disse que o cout não foi declarado, provavelmente por que seu programa nao detectou o iostream, faça o anterior ou elimine esse stdafx. você não é obrigado a usá-lo. prove isso: #include <iostream>using namespace std;int main (){ cout << "Hola" << endl; cin.ignore(); return 0;} Si nao prove isso: #include "stdafx.h" //<- iostream pode estar aqui dentrousing namespace std;int main (){ cout << "Hola" << endl; cin.ignore(); return 0;} E si não funcionar nenhuma das duas formas prove isso: #include "stdafx.h"#include <iostream>using namespace std;int main (){ cout << "Hola" << endl; cin.ignore(); return 0;} porém essa ultima quase estou seguro que não vai funcionar XD. Logo você nos conta como foi.
  11. Deixo o código aqui. Praticamente fiz seus deveres, tenta entender ao menos e si tiver duvida pergunte. você esta aprendendo C? http://codepad.org/EVEaoXd6 <-click aqui!
  12. vangodp

    Onde aprender C

    mediante sockets. Para Windows se chama winsock ou winsock2, para Linux difere ligeiramente, porém é bastante parecido. Busque informação no google de "como fazer socketes em C" ou C++, por exemplo. Pode procurar aqui mesmo no buscador do fórum que talvez saia algo.
  13. Existem muitas funções para isso, algumas delas são: ShellExecute que obriga um arquivo abra com um determinado programa de nossa eleição. #include <stdio.h>#include <stdlib.h>#include <windows.h>int main () { int retorno = ( int ) ShellExecute ( NULL, "open", "c:\\windows\\system32\\notepad.exe", NULL, NULL, SW_SHOWNORMAL ); if ( retorno <= 32 ){ printf( "Nao foi possivel abrir o arquivo.") ; } return 0;} A função system que funciona com comandos de ms dos de sempre #include <stdio.h>#include <stdlib.h>#include <windows.h>int main () { system("C:\\Windows\\System32\\notepad.exe"); return 0;} Existem muitas mais. WinExec, execv, spawnl, spawnv..... Busque informação em google sobre elas.
  14. Isso é porque você esta dividindo inteiros e depois guardando eles em um float, são 2 ações diferentes. Si você dividir 7/2 você esta descartando a parte decimal, isso acontece por que primeiro se obtêm o resultado de dividir um inteiro, um inteiro nao tem partes decimais, depois o compilador faz un cast automático a float, conclusão, o compilador coloca um zero aí. Outra coisa é que você faça float n = 7.0/2.0, em esse caso se trata de flotantes e sim vai imprimir 3.5000000... que você esta buscando.
  15. Não sei portugol. =( Serve C ou C++? =)
  16. você nao vai queimar o computador fazendo aplicações de escritório né? XD Outra coisa é quando se trata de programação de componentes eletrônicos, ou de controladores. Deixo claro que nao tenho experiencia con esse tipo de programaçao, porém investigando, uma vez li que nesse tipo de programação você não pode se equivocar como fazemos normalmente. Em aplicações de de escritório as vezes não sabemos que vai acontecer e ainda assim damos a compilar para ver si funciona ou simplesmente esperamos a que o compilador diga qual é o erro, então o consertamos. porém em controladores por exemplo, si nos equivocamos simplesmente tostamos a placa. kkkkk Existem erros lógicos, que não são erros de sintaxe por exemplo, imagina que você tinha que permitir o passo de 3 volts e você deixa passar 30 por exemplo. Como o compilador vai saber isso? É lógico que é só um exemplo, nem imagino como é programar hardware, pode que um contador mal feito, algo feito fora de tempo, podem ser muitos erros, o compilador vai dar por ok, e você só vai ver a plaquinha soltando fumaça no melhor dos casos quando executar seu controlador kkkk. Ter um extintor a beira por si acaso acontece. kkk Eu acho que ser hacker é uma algo que você pode optar quando adquirir certo grau de conhecimento, por isso comece pelo principio e continue sem pressa porém sem pausa, todos os dias aprenda algo novo, com o passo de vários dias, meses, anos, você vai se dar conta que você saberá muito mais que aquele carinha que tava lá nos inícios cheio de duvidas. Então ainda que você não saiba certo linguagem você somente terá que adaptar-se ao novo linguagem, será muito mais rápido que aprender de zero. Eu acho que a melhor forma de aprender é sujar as mãos, ou seja escrever código, método de ensaio erro e acerto, porém não com hardware.kkk Essa inquietude que você tem por saber as coisas é uma boa aliada sua, não o a perda de vista que você chega longe, mas não esqueça de dar cada passo, eles são muito importante, uma coisa é ver a meta, outra é você chegar lá né. Eu sou um programador auto didático, aprendo com internet, tenho a vantagem de poder falar español, a comunidade de programadores em español ela é maior que a comunidade em português, porém eu posso andar por ambos mundos, meu inglês é meia coxa, porém da pra arranhar muito bem os foros em inglês também, a comunidade em inglês é bestial, eu recomendo muito o inglês, eles tem sempre os melhores livros, os melhores fóruns etc. Lógico, foram eles que criarão a maioria dos linguagens. Minha meta é aprender programação de jogos, nisso é que eu me centro. Não é fácil para nada, si não da uma olhada tudo o que envolve, IA, teoria de jogos, teoria de grafos, redes, matemáticas..... e a lista continua até onde você quiser. Por isso certas coisas eu sei e outras não. Eu não me considero um hacker porém posso fazer un hook do seu teclado e enviar tudo por alguma espécie de email, é só chegar em um locutório e acessar tudo, e nem sou hacker para nada. kkk Em fim isso de programar é muito legal, como mínimo você não perde nada como falei. Sorte, si precisar de ajuda aqui estaremos, material de estudo não te posso dar por que esta em español integramente, si o español não o for um problema, posso passar sem problemas. porém eu estudei com material da net, vídeos, fóruns, blogs, cursos free, as paginas de referencia cpulspuls.com, e a en.cppreference.com são companheiras inseparáveis minhas. kkk Fui! Que acabo escrevendo a bíblia e não digo nada de valor. kkkk
  17. Vírus de red? Usando sockets e explorando as possíveis vulnerabilidades que tenha um determinado sistema. A maioria dos vírus troianos etc, contam com a estupidez do próprio usuário. O usuário é quem se auto infecta descarando programas, basta você "desensamblar" um programa e agregar o seu pequeno "extra" para abrir uma porta traseira por exemplo, lógico que ai é onde entra o Assembler que eu mencionei. porém uma vez a porta aberta ai é justo onde entra C para se comunicar com o outro programa. Claro que se podem utilizar outros programas programas para isso, mas agora pense em um keylogger, o um programa que recompila informação do usuário... Pode ser feito Java? E si puder.. Será ligeiro como para que seu dono não se moleste? você já pensou que Java depende do motor para funcionar? E si o usuário não tem instalado o motor de java, ou pior em sua versão correta? Com C/C++ isso não acontece. Ser hacker não é coisa de um só linguagem de programação, você deve ter conhecimento em varias áreas da computação. Programação, redes, engenharia social, segurança... porém isso não foi o que você perguntou ao principio. Olha esquece tudo isso. Aprenda primeiro o seu programa escolhido. C é ótimo para isso, logo aprenda C++, java, algo de programação html, java script. Aprenda Assembler si quer aprender a penetrar as defesas dos seus "inimigos", ou crackear programas. Desde agora mesmo te aconselho que entres em fóruns de programação de exploits e virus, segurança de redes, etc etc. Para penetrar nas defesas do inimigo você deve conhecer essas defesas. Em fim... É coisa de ler e reler, e aprender coisas novas todos os dias. Si conhecer a pessoas com sua mesma afinidade melhor ainda, em grupo sempre se faz mais divertido. XD Um passo por vez ok? Não perca tempo aqui, tudo o que você estuda sobre programação é útil. Sorte.
  18. Até o ponto de você criar todas as outras linguagens, sistemas operativos, programas de escritório, controlador para hardware ect ec tetc. Si fosse fazer um foguete para ir para Marte, provavelmente faria nesse linguagem, pois confiaria minha vida em outros linguagens hahah O tiro no pé você pode dar quando sair de rango em um loop ao percorrer um array por exemplo, ou cair em loop infinito. Em C você não tem sua mãe ou ao professor ao seu lado que te diga se você esta fazendo bem, si cagar você corre o risco de afundar todo o sistema. Já pensou você vender um programa para google e esse programa causar perdas milionárias por algum bug, e esse bug seja culpa sua? Fique tranqüilo, isso se soluciona com pratica. hehe C é tão potente que permite você ter acesso a todo o hardware do seu computador, por isso ele é potente e perigoso obviamente. Certamente a linguagem preferida dos hackers conjuntamente com Assembler e C++. XDDD
  19. SFML precisa de bem poucos recursos. Eu uso ela com um pentium 4 de 3 gigas, porém se pode usar com bem menos. Somente 2 gigas de memoria, RAM e uma placa de vídeos de 256 megas. Se pode usar com bem menos recursos ainda. Sobre si ela pode usar 2d y 3d.. Sim claro! você pode usar open gl para 3d, e 2d não ha problema. O blender para jogos eu não usaria. Alguns exemplos https://www.youtube.com/watch?v=mHqxAC82ZNM :3 https://www.youtube.com/watch?v=yN_E9jFkx6I
  20. si você estiver em C++ e quiser usar scanf, faça o include como #include<cstdio> e nao como #include<stdio.h>. Prove isso e me diga si da erro, porém o que emite visual studio é simplesmente um aviso, você pode ignorar. E o cin se faz com o operador >> e nao <<.
  21. você pode declarar ele assim: char sequencia[4] ="";. Por que 4? porque sempre quando seja char devemos deixar 1 a mais para o caracter nulo. si você repetir o processo com char sequencia[] ="Ola"; e voltar a comprovar, você vai ver que sequencia tem 3 letras porém te vai devolver 4, por causa do nulo "oculto" que marca o final do texto. Por que existe esse nulo? fácil... si declaramos char sequencia[500] =""; e depois guardar nele um simples "Ola". Como vai saber printf, onde tem que parar de imprimir? Pois o printf vai parar justo nesse caracter nulo, tente imprimir isso "Ola\0 mundo!" e veja como printf se detem justo nesse \0. isso quer dizer que si queremos imprimir "Ola mundo!" o nosso texto ganha \0 logo no final de usar scanf, ou na mesma hora de declarar char sequencia[] ="Alo mundo!" e outras tantas funçoes. O que acontece é que esse processo é oculto para nós programadores, porém devemos ter conhecimento disso. Quando eu entrar por teclado ou na hora de declarar un texto como "Alo mundo!", no buffer ele vai estar "Alo mundo!\0". E outra coisa, nao devemos nunca ocupar a ultima casinha de um char, por que si nao o programa vai por o nulo fora do array, si declaro char sequencia[3] ="Alo", a ultima casinha é sequencia[2], pois o programa vai pegar e colocar o nulo na casinha sequencia[3]. ISSO É MUITO PERIGOSO NAO FAÇA ISSO!!! você esta saindo fora do rango sen saber. Si precisar de 10 chars declare 11 porém somente use os 10 ok. Pode fazer isso: char sequencia[10+1] ="". Legal né? Outra coisa.. si fizer char sequencia[500] =""; as 500 casinhas fican formatadas com NULL, ou seja sem lixo. Isso é por causa das aspas "" que dicen que toda a cadeia de caracteres fique com formato NULL.
  22. scanf("%s", &sequencia), isso esta mal, o correto seria scanf("%s", sequencia) sem &. Arrume isso e me conte como ficou. E isso aqui nao podemos fazer nunca(char sequencia[] ="";) e depois "scanf("%s", sequencia)", você nao reservou nenhum espaço para sequencia?? Si isso chegar a funcionar que tamanho tem sequencia? Quando fazemos char palavra[] ="Alo mundo!" palavra toma automaticamente o tamanho de 11 letras + caracter NULL ('\0') que marca o fin do string, porém isso só é possivel fazer na hora da declaraçao. Si fizer char sequencia[] ="", supondo que o compilador nao emita erros por nao estipular um valor entre [], ao nao ter letra nenhuma entre " e " nem imagino que valor toma essa variavel, porém podemos saber com printf("%d", sizeof(palavra)/sizeof(palavra[0]) ). Logo depois do printf podemos saber quantas letras podem ser armazenadas, porém agora nao posso comprovar por que meu pc esta quebrado e estou sem compilador adiante, logo mais tarde comprovo para ver o resultado. Solucione o anterior que é o mais importante.
  23. Acho que com std::wcout, std::wcin, ou wprintf, wscanf. A w é de wide(largo) de uma olhada aqui: http://www.cplusplus.com/reference/cwchar/ http://stackoverflow.com/questions/18675720/cout-%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82-or-wcout-l%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82 E en vez de usar char temos que usar wchar_t tipo: wchar_t ch = 'h'; busque no google: "wilde char c++", ou C .
  24. Siga esses passos para instalar.http://lazyfoo.net/tutorials/SDL/01_hello_SDL/windows/codeblocks/index.php A pagina é uma otima referencia sobre SDL. http://lazyfoo.net/tutorials/SDL/index.php porém SDL é para C, melhor usar SFML para C++. É até mais fácil de usar.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!