Ir ao conteúdo
  • Cadastre-se

1freakday

Membro Pleno
  • Posts

    670
  • Cadastrado em

  • Última visita

Tudo que 1freakday postou

  1. Use o File Viewer Plus, também estou no Windows... adicionado 1 minuto depois @Luis Felipe Miranda Nesse site deu certo: https://hexed.it/
  2. Em vez de fprintf(arq,"%c",i[3]); Não seria: fprintf(arq,"%c",i[k]);
  3. Poderia postar qual sua dificuldade, ou apontar quais problemas estão ocorrendo no código?
  4. Imagine que quando você esta colocando os numeros, todos são positivos de 1 a 10, mas se você iniciar a variável como 0, você acha que ela vai mudar? Por isso é necessário iniciar com o primeiro elemento da matriz, depois verificar com os demais dela: menor = mat[0][0]; for(lin=0; lin<=2; lin++){ for(col=0; col<=2; col++){ //Já iniciamos com mat[0][0] if(lin != 0 && col != 0){ //menor encontrado ? if(mat[lin][col] < menor){ menor = mat[lin][col]; pos1=lin; pos2=col; } } } }
  5. @Gabriel T.I Agora, como 0 é menor que qualquer variável acima das que você colocar, ele sempre mostrara como menor. Inicie a variável menor com o primeiro índice do vetor. menor = vet[0]
  6. Para substituir os dados, basta altera-los novamente. Na entrada peça o código que no caso é índice. Depois comece a sobreescrever os dados. Não precisa usar nenhum tipo de laço.
  7. @Bergamaschi A maioria das API's usam Json ou XML como resposta, tudo que você precisa fazer é escolher uma API, as de tempo são fáceis, e separar os dados da resposta com um parser. Ai é só exibir os resultados na tela de acordo com a interface da mesma. Olha esse API: https://hgbrasil.com/status/weather/ Leia em baixo onde tem: Obter dados por Geo IP
  8. @Gabriel T.I Tenta iniciar a variável maior com 0.
  9. @Valiwne Não está renomeando, por que o arquivo ja existe, e la em cima, a agenda precisa ser aberta como leitura: void excluir(){ FILE* arquivo; FILE* arqsaida; CONTATO ctt; char procurado[30]; cabecalho(); arquivo = fopen("agenda.txt", "rb"); arqsaida = fopen("agenda_nova.txt", "w"); if (arquivo ==NULL || arqsaida == NULL){ printf("Problema na abertura do arquivo!\n"); return; } else{ fflush(stdin); printf("Digite o nome que você quer apagar:\n"); gets(procurado); while(!feof(arquivo)){ fread(&ctt,sizeof(CONTATO),1,arquivo); if (strcmp(procurado,ctt.nome)==0){ printf("Contato encontrado %s!\n",ctt.nome); fwrite(NULL, sizeof(CONTATO), 1, arqsaida); }else{ if(feof(arquivo)) break; fwrite(&ctt, sizeof(CONTATO),1,arqsaida); } } } fclose(arquivo); fclose(arqsaida); //remove backup antigo / novo backup / agenda final remove("agenda_backup.txt"); rename("agenda.txt", "agenda_backup.txt"); rename("agenda_nova.txt", "agenda.txt"); getch(); }
  10. Sim, escrevi errado, kkkkk, acontece, é feriado xD, segue: while(fread(&ctt,sizeof(CONTATO),1,arqentrada)==1){ if (strcmp(procurado,ctt.nome)==0){ continue; }else fwrite(&ctt, sizeof(CONTATO),1,arqsaida)); }
  11. Na hora de alocar, você aloca primeiro a altura depois a largura, idêntico a alocação de uma matriz de char. Primeiro linhas depois colunas. No for você segue a mesma lógica, Primeiro vem a altura depois a largura. Eu testei usando unsigned char, e isso está causando problemas, pois de todos valores numéricos, ele apenas pega o 1 de cada linha. Troque por unsigned int. Código MODIFICADO: #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ unsigned int r,g,b; //struct dos pixels em RGB; }pixel; int main(){ FILE *image; FILE *newImage; char key[5]; int i,j, larg, alt, max; //entrada image = fopen("Normal2.ppm", "r"); if(image == NULL) { printf("Erro na abertura do arquivo \n"); return 0; } //key fscanf(image, "%s", key); if(strcmp(key, "P3") != 0){ printf("Arquivo n é PPM\n");//checa se esta em P3 printf("%s\n",key ); fclose(image); return 0; } //header fscanf(image, "%d %d\n%d\n", &alt, &larg, &max);//le o cabeçario printf("larg =%d alt=%d key=%s max=%d\n",larg, alt, key,max );//printa na tela os valores lidos //saida newImage = fopen("arquivo.ppm","w+"); //abre o novo arquivo que vai ser criado if(newImage == NULL){ printf("ERRO AO ABRIR NEWIMAGE"); return 0; } //alt x largura - [610][480] pixel **RGB =(pixel**)malloc(alt*sizeof(pixel*)); for(i=0;i<alt;i++){ RGB[i] = (pixel*)malloc(larg*sizeof(pixel)); } //lê as infos da matriz original for(i=0; i<alt;i++){ for(j=0;j<larg;j++){ fscanf(image, "%d", &RGB[i][j].r ); fscanf(image, "%d", &RGB[i][j].g ); fscanf(image, "%d", &RGB[i][j].b ); } } //grava header / dados fprintf(newImage, "P3\n%d %d\n%d\n",alt,larg,max); for(i=0;i<alt;i++){ for(j=0;j<larg; j++){ fprintf(newImage, "%d\n", RGB[i][j].r ); fprintf(newImage, "%d\n", RGB[i][j].g ); fprintf(newImage, "%d\n", RGB[i][j].b ); } } //fim fclose(image); fclose(newImage); return 0; }
  12. 1) Você está usando uma matriz multidimensional para armazenar valores do tipo int, sendo que apenas usa o primeiro indice no printf. Troque por vetor. int vetQuan [MAX][10]; scanf("%d",&vetQuan[x]); printf("\n%s\t\t%s\t\t%d\t\t%0.2f",vetCod[x],vetPro[x],vetQuan[x],vetPre[x]); 2) Na questão do preço, você não usou o índice no scanf: scanf("%f",&vetPre); scanf("%f",&vetPre[x]);
  13. @Valiwne Use dois arquivos, um você usa para ler os contatos e outro para escrever. Na hora da escrita, você apenas ignora o cadastro com o nome recebido. Assim: void excluir(){ FILE* arqentrada, arqsaida; CONTATO ctt; char procurado[30]; int ativo=0; int posicao =0; cabecalho(); arqentrada = fopen("agenda.txt", "ab"); //arquivo onde tem os contatos arqsaida = fopen("agenda_nova.txt", "w");//arquivo onde sera salvo os contatos if (arqentrada==NULL || arqsaida==NULL){ printf("Problema na abertura do arquivo!\n"); return; } else{ fflush(stdin); printf("Digite o nome que você quer apagar:\n"); gets(procurado); while(fread(&ctt,sizeof(CONTATO),1,arqentrada)==1){ if (strcmp(procurado,ctt.nome)==0){ fwrite(&ctt, sizeof(CONTATO),1,arqsaida)); } } } fclose(arqentrada); fclose(arqsaida); //aqui precisa renomear o agenda_nova.txt por agenda.txt getch(); } }
  14. @Valiwne use uma struct temporária qualquer, depois só escreve em um arquivo diferente e no final renomeia ele: while(fread(&ctt,sizeof(CONTATO),1,arquivo)==1){ //aqui ignora e pula para o proximo if (strcmp(nome,ctt.nome)==0){ continue; }else { //aqui escreve no novo arquivo //fwrite... } }
  15. @Valiwne Para remover, basta ler todo conteúdo do arquivo, e reescreve-lo sem escrever o que deve ser excluido. Use strcmp.
  16. Supondo que você saiba usar sockets, enviar dados, receber dados e manipula-los. Eu acredito que exista duas formas de implementar: uma seria com servidor onde dois clientes se conectam nele, onde ele envia, calcula, etc; outra forma seria onde um cliente inicia um servidor e lida com os dados de entrada e saída dos dois clientes.(igual cs); Para lidar com os dados, use hexadecimal, ou alguma forma de dado que seja rápido e simples, e assim manipular os dados que entram e saem, seja os dados da partida, ou os clientes que conectam e desconectam. Resumindo, você precisa criar funções para os packets, struct's para armazenar as informações, e gerenciar os socket's (iniciar, fazer bind). Aconselho a usar threads, caso use mais de 2 jogadores. adicionado 1 minuto depois Parece muita coisa, mas na hora que você começa a implementar, vem muitas ideias, e acaba sendo bem rápido.
  17. @Gabriel Lin voce ja testou se o login e senha sao realmente criados ? Tambem de uma verificada nesse for: for(int r=0; (crip_login,crip_senha)[r]; r++) fputc((crip_login,crip_senha)[r], fp); /* Grava a string, caractere a caractere */ Talvez seja melhor salvar uma string depois a outra.
  18. @Mariana Pires Como você guarda cada cadastro por linha, você pode fazer um loop para ler as linhas, ai usa a variável i para imprimir no final. Exemplo: char buffer[200]; FILE *Arquivo = fopen ("arquivo.txt", "a"); int i = 0; //Leitura de arquivo - linha por linha - cadastro x linha while(!feof(Arquivo)){ i = (fgets(buffer, 200 , Arquivo) != NULL ? (i+1):i); } //Imprime printf("Possui %d cadastros!\n", i);
  19. @Mariana Pires No caso seria na hora de leitura? por que não usa uma variável que identifica a contagem dos cadastros. Na hora de cadastro você usa `int id` para localizar o ultimo cadastro e incrementar a quantidade de cadastro. int id = 0; //localiza o ultimo id //incrementa o id //salva
  20. Use fgets para todos com cadeia de caracteres. Também use fflush(stdin); antes do fgets, para apagar o buffer de entrada. Caso só "Maria" seja lido, use scanf("%[^\n]s", nome) no lugar de fgets.
  21. @edivaldo777 Quando você têm um array de char, no caso uma string, você não usa o índice ao armazenar uma string no array. No seu código ai em cima, não precisa usar [linha].
  22. Explicando o que o @iHollyZinhO disse. Se a condição do while for i==5, significa que o while só continua se i for igual a 5.
  23. @HebertCleiton Exato, mas isso não fará muita diferença se seu compilador não ter problemas em compilar .h em C++.
  24. @HebertCleiton A vantagem está na necessidade de uso em si, já que antigamente era usado um arquivo para um projeto inteiro, até que surgiram as headers (bibliotecas, .h, .hpp). Assim, você não precisa usar um arquivo para o projeto, você pode separar tudo, deixando cada seção em seu lugar. Isso facilita muito a documentação. Os compiladores também distinguem de .h para .hpp, sendo C e C++. Portanto a escolha de separar as funções membros da classe em dois arquivos é sua, dependendo do tamanho, se pequeno é irrelevante separar.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!