Ir para conteúdo


  • Conteúdo Similar

    • Por KA9
      Saudações a todos , estou recrutando voces para um grupo com nome confidencial com vagas para até + 2 admins.
      Caso alguem tiver interesse chama no telegram com o seguinte ID: @recrutaadmbp , mais informações quando entrar em contato.
      REQUISITOS
      + MATURIDADE +
      + COMPROMETIMENTO +
      Conhecimentos Minimos: 
      Html + CSS + JS (Básico)
       
      Att: k9
    • Por qebuqci
      Eai rapaziada, beleza?
      Então to começando a programar em C e estou com dificuldade em fazer um negócio. Eu quero criar uma estrutura e um ponteiro que guarde os valores referentes a cada membro da estrutura. Algo semelhante a isso
      typedef struct { char nome[20], marca[20]; } ESTRUTURA; int main(void) { ESTRUTURA *ponteiro; int i, quantidade;
      Ai aqui entra um loop de repetição (for i até quantidade) pra eu associar cada valor do ponteiro->nome, ponteiro->marca. Tanto quanto for necessário. Por exemplo, se eu quiser fazer um cadastro de três marcas por exemplo, eu quero um ponteiro que suporte isso na memória e cada valor aponte pra um membro da estrutura.
      scanf("%d",&quantidade); ponteiro=(char *) malloc (quantidade*sizeof(ESTRUTURA)); for (i=1;i<=quantidade;i++) { scanf("%s",ponteiro->nome); scanf("%s,ponteiro->marca); } criaArquivo(ponteiro); free(ponteiro); return 0; }
      Bom, a questão é, eu quero salvar todos os dados cadastrados num arquivo depois. Então, eu criei uma função que recebe o ponteiro em que estão e joga isso pro ponteiro arquivo. E até aqui beleza, ele cria o arquivo, mas o arquivo só salva o primeiro valor da primeira posição de memória. No caso do exemplo que eu dei, digamos que eu quisesse cadastrar 3 marcas e 3 nomes. Ele alocaria dinamicamente o espaço necessário e cadastraria tudo certinho, agora na hora de passar pro arquivo, somente o primeiro nome do primeiro cadastro é salvo.
      Eu não entendi isso, eu não passei o ponteiro inteiro pra função criaArquivo?
      Eu estou salvando no arquivo desse jeito
       
      void criaArquivo(char *ponteiro) { FILE *arquivo; arquivo=fopen("teste.txt","w"); fprintf(arquivo,"%s",ponteiro); fclose(arquivo); } Se eu pedir na função criaArquivo pra ele printar esse ponteiro que ele recebe, ele não recebe o ponteiro inteiro com todos os dados cadastrados na main, ele recebe somente o valor daquela posição de memória. Somente do primeiro ponteiro->nome. Ai isso é que quebra, porque eu já tentei chamar na main, criaArquivo(ponteiro+1). Achando que a próxima posição de memória teria ponteiro->marca. E ele cria o arquivo sem nada, como se não tivesse valor cadastrado ali
      Então assim, deixando claro as minhas dúvidas, eu defini um ponteiro com tamanho A bytes. Quando eu passo ele pra outra função, ele não vai com o tamanho A de memória, ele vai somente o valor da primeira célula de memória, certo? Como eu faço pra pegar o resto?
    • Por Pain
      Segue o Link do Canal no Youtube: https://www.youtube.com/playlist?list=PLa75BYTPDNKZWYypgOFEsX3H2Mg-SzuLW
      Já vi essas aulas  e o professor explica muito bem! Ele vai até alocação dinâmica.
    • Por gusdnide
      Proxy Changer

      Salve galera, venho apresentar esse meu codigo velho que faziar para poder aprovar CC na netflix, pegava um Proxy do pais que desejava (mais precisamente uma lista) e trocava as configuraçoes globais do Windows de proxy, ou seja voce podia acessar qualquer navegador que o seu ip teria mudado!, vai ser bem simples apartir desse meu projeto desenvolvi algo maior que me ajuda até hoje, mas ainda falta alguns concertos ae quando tiver tudo OK eu posto aqui!
      Bom beleza vamos la , primeiro vamos chamar as bibliotecas que usaremos!
      using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; using Microsoft.Win32; using System.Net; using System.Threading; using System.IO; Ok, ja com as bibliotecas importadas, vamos adicionar nossas referencias que vamos chamar das API do windows ou especificamente da "wininet.dll" ok.
      #region Referencias [DllImport("wininet.dll")] public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength); #endregion (Para saber mais sobre a funçao acima só acessar o site da Microsoft aqui ) Ok, agora vamos criar um metodo para chamar essa funçao de maneira correta na hora correta.
      static bool MudarProxy(string Proxy, bool Habilitar) { RegistryKey RegInternet = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true); //Atribui a variavel RegInternet o registro onde fica as configuraçoes da internet no regedit RegInternet.SetValue("ProxyEnable", Habilitar); //Habilita o proxy RegInternet.SetValue("ProxyServer", Proxy); //Atribui o server proxy para o windows InternetSetOption(IntPtr.Zero, 0x27, IntPtr.Zero, 0); //Avisa o windows q ouve uma mudança nas configuraçoes da internet InternetSetOption(IntPtr.Zero, 0x25, IntPtr.Zero, 0); //Atualiza as configuraçoes da internet } Para mais flags do InternetSetOption pode ser visto aqui, ok agora é só desenvolver o programa outra funçao simples de se fazer para checar se o proxy está funcionando, é fazer um teste com ele, se o site não responder ou der algum error é por que não esta funcionando Veja o exemplo:
       
      static bool VerificarProxy(sProxy p) { HttpWebRequest wc = (HttpWebRequest)WebRequest.Create("http://google.com"); wc.Proxy = new WebProxy(p.IP, p.Port); wc.Timeout = 2000; try { wc.GetResponse(); return true; } catch { return false; } } O código do meu programa que fiz de teste:
      using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; using Microsoft.Win32; using System.Net; using System.Threading; using System.IO; namespace ProxyChange { class Program { #region Referencias [DllImport("wininet.dll")] public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength); #endregion #region Metodos static bool MudarProxy(string Proxy, bool Habilitar) { RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true); registry.SetValue("ProxyEnable", Habilitar); registry.SetValue("ProxyServer", Proxy); InternetSetOption(IntPtr.Zero, 0x27, IntPtr.Zero, 0); InternetSetOption(IntPtr.Zero, 0x25, IntPtr.Zero, 0); } static bool CheckContains(sProxy p) { foreach (sProxy p2 in ProxyTestados) if (p.getString() == p2.getString()) return true; return false; } static bool CheckProxy(sProxy p) { if (!CheckContains(p)) ProxyTestados.Add(p); else return false; HttpWebRequest wc = (HttpWebRequest)WebRequest.Create("http://google.com"); wc.Proxy = new WebProxy(p.IP, p.Port); wc.Timeout = 2000; try { wc.GetResponse(); return true; } catch { return false; } } #endregion #region Structs struct sProxy { public string IP { get; set; } public int Port { get; set; } public string getString() { return $"{IP}:{Port}"; } } #endregion static List<sProxy> ListProxy; static List<sProxy> ProxyFuncionando; static List<sProxy> ProxyTestados; static string Arquivo = ""; static int TempoTroca; [STAThread] static void Main(string[] args) { MudarProxy("", 0); Console.ForegroundColor = ConsoleColor.White; Console.Title = "Proxy Chaanger"; ProxyTestados = new List<sProxy>(); if (ListProxy == null) ListProxy = new List<sProxy>(); if (ProxyFuncionando == null) ProxyFuncionando = new List<sProxy>(); TempoTroca = 0; string Resp = ""; if (ListProxy.Count == 0) { Console.Write("Digite o nome do arquivo de proxys: "); Resp = Console.ReadLine(); if (!File.Exists(Resp)) { Console.WriteLine("Arquivo invalido!"); Console.ReadLine(); Console.Clear(); Main(args); return; } } Arquivo = Resp; LerProxys(); Console.Write("Digite quantos minutos para a troca de IP: "); Resp = Console.ReadLine(); if (int.TryParse(Resp, out TempoTroca)) { if (TempoTroca > 0 && TempoTroca < int.MaxValue) { TempoTroca *= 60000; } else { Console.WriteLine("Arquivo invalido!"); Console.ReadLine(); Console.Clear(); Main(args); return; } } else { Console.WriteLine("Arquivo invalido!"); Console.ReadLine(); Console.Clear(); Main(args); return; } new Thread(Rotina).Start(); Console.ReadLine(); MudarProxy("", 0); Environment.Exit(1); } static void LerProxys() { ListProxy.Clear(); foreach (string Linha in File.ReadAllLines(Arquivo)) { if (Linha.Contains(":")) { string[] Div = Linha.Split(':'); int Porta = -1; sProxy p; if (int.TryParse(Div[1], out Porta)) p = (new sProxy() { IP = Div[0], Port = Porta }); else continue; if (!ProxyTestados.Contains(p)) ListProxy.Add(p); } } } static void TestarProxys() { int count = 1; foreach (sProxy p in ListProxy) { Console.Clear(); Console.WriteLine("Testando Proxys..."); Console.WriteLine($"{ListProxy.Count} proxys carregados!"); Console.WriteLine($"Testando {count}/{ListProxy.Count} e {ProxyFuncionando.Count} estao funcionando!"); if (CheckProxy(p)) { ProxyFuncionando.Add(p); } count++; Thread.Sleep(200); } ListProxy.Clear(); } static void Rotina() { int Count = 0; while (true) { Console.Clear(); Console.WriteLine("Procurando Proxy Funcionando!"); Console.WriteLine("Aperte qualquer tecla para sair!"); while (CheckProxy(ListProxy[Count])) { Console.Clear(); Count++; if (Count == ListProxy.Count) { Console.WriteLine("Os Proxys acabaram!"); Console.WriteLine("Desligando proxy..."); MudarProxy("localhost", 0); Console.ReadLine(); return; } } Console.Clear(); sProxy AtualProxy = ListProxy[Count]; Console.WriteLine($"Proxy Atual: {AtualProxy.getString()}"); Console.WriteLine($"Proxima Troca: { DateTime.Now.AddMinutes(TempoTroca/60000).ToString() }"); Console.WriteLine("Aperte qualquer tecla para sair!"); MudarProxy(AtualProxy.getString(), 1); Thread.Sleep(TempoTroca); LerProxys(); } } } }  
×

Informação Importante

Ao usar este site, você concorda com nossos Termos de Uso.