vangodp

Membros
  • Content Count

    792
  • Joined

  • Last visited

Community Reputation

0 Neutro

About vangodp

Perfil

  • Gender
    Male
  • Location
    Spain
  • Interests
    ]—[””I””IC++I||I||]>——-

Contatos

  • Skype
    vangodp vamp

Recent Profile Visitors

3413 profile views
  1. vangodp

    Cin sem dado

    #include <iostream> using namespace std; int main (){ cout << "Ola" << endl; getchar(); cout << "mundo" << endl; return 0; } #include <iostream> #include <cstdlib> using namespace std; int main (){ cout << "Ola" << endl; system("pause>null"); cout << "mundo" << endl; return 0; }
  2. Um dado a ter em conta é que o arquivo precisa existir antes de abrir o programa pois o parametro 'a' do fopen quer dizer "modo inserção", ele não cria um arquivo, simplesmente atualiza um já existente.
  3. você ta usando a função errada e o modo de abertura errada. Acredito que o que você quer é um arquivo de texto plano. #include <stdio.h> #include <stdlib.h> FILE*arquivo; char nome[1024]; void pedirnome() { printf("Digite seu nome:\n"); gets(nome); } int main(){ arquivo = fopen("arquivo.txt", "a"); //Comprovando se o arquivo abriu. Caso contrario, é dizer, não abrir, saimos. if( arquivo == NULL ){ perror("Erro"); getchar();//pausa exit(1); } pedirnome(); //fwrite(nome, 1, strlen(nome), arquivo); fprintf(arquivo,"%s\n", nome); //Guardar. Observação: O ARQUIVO DEVE EXISTIR pois o atributo 'a' de append somente acrecenta dados em um arquivo já existente. fclose(arquivo); printf("\nSalvo com sucesso."); return 0; } Essa seria a forma correta.
  4. vangodp

    Como resolver??

    Ta passando deveres aqui pra galera?
  5. #include <stdio.h> #include <stdlib.h> #include <stdbool.h> //Usar boleanos(true e false) #include <limits.h> //UINT_MAX int main() { unsigned int n; unsigned int maior = 0; unsigned int menor = UINT_MAX; bool sair = false; printf ( "%u e %u\n\n", maior, menor ); //Imprimimos só para ver o que há while ( !sair ) { //Por enquanto não sair... printf ( "\nInsira um valor: " ); scanf ( "%u", &n ); if ( n == 0 ) { sair = true; continue; } //Si foi zero queremos sair, voltamos para o while e obviamente sairemos do programa //si não foi zero if ( n > maior ) { maior = n; } if ( n < menor ) { menor = n; } printf ( "%u e %u\n", maior, menor ); } return 0; } Se tiver duvidas pergunte
  6. Vou comentar os pontos que vejo que estão errados. Nos scanfs não leva & na hora de ler as strings nem os ponteiros, tire o & de todos os scanfs que forem ler strings ou ponteiros. Como não conheço ninguém que entre ponteiros por teclado por agora basta você lembrar que strings não levam & na hora de ler, só os int, float, char etc levam o & adiante no scanf. Certamente seu programa também está dando problema na hora de ler strings, isso é devido a causa de ter lixo no buffer. Procure um bom tutorial de "como limpar o buffer do teclado em C". Seja o que for não use fflush junto com stdin como se indica em muitos lugares, se ver fflush(stdin) onde entrar nem precisa ler, saia fora e busque outra pagina. fflush+ stdin aparentemente funcionam mas tem varios problemas, Recomendaria você ler alguns posts: https://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/ https://forum.scriptbrasil.com.br/profile/112983-vangodp/?status=3184&type=status https://www.clubedohardware.com.br/forums/topic/1186013-c-atribuição-de-strings-a-partir-de-uma-entrada/?tab=comments#comment-6522965 char funcional[1]; só tem 1 char? >_<
  7. Uma boa forma é usando Autômato finito determinístico e usar a sintaxes que se pode observar aqui: "Syntaxe de um email". Em Autômato finito determinístico serve, entre muitas coisas, para validar uma string e saber se ela idêntica a outra que temos. Por sorte tenho um exemplo. Imaginamos umas quantas palavras ou frases(neste exemplo somente veremos algumas palavras): "char" "for" "float" Esses seriam os caminhos a seguir para validar essas três palavras. Então nosso código seria esse mais ou menos: #include <stdio.h> #define TAM 100 void qInicio ( char palavra[TAM]); void q0( int contador, char palavra[TAM]); void q1( int contador, char palavra[TAM]); void q2( int contador, char palavra[TAM]); void q3( int contador, char palavra[TAM]); void q4( int contador, char palavra[TAM]); void q5( int contador, char palavra[TAM]); void q6( int contador, char palavra[TAM]); void q7( int contador, char palavra[TAM]); void q8( int contador, char palavra[TAM]); void q9( int contador, char palavra[TAM]); void qFim(); void qErro(); int main(){ char palavra[TAM] = "for"; //casos de comprovação: o programa só aceitará "char", "for" ou "float". Mas você pode por qualquer frase qInicio(palavra); return 0; } void qInicio ( char palavra[TAM] ){ int contador = 0; q0( contador, palavra ); } void q0( int contador, char palavra[TAM] ){ if ( contador < TAM ){ if ( palavra[contador] == 'f' ){ q1( ++contador, palavra ); }else if (palavra[contador] == 'c'){ q8( ++contador, palavra ); }else{ qErro(); } } } void q1( int contador, char palavra[TAM] ){ if ( contador < TAM ){ if ( palavra[contador] == 'l' ){ q2( ++contador, palavra ); }else if (palavra[contador] == 'o'){ q3( ++contador, palavra ); }else{ qErro(); } } } void q2( int contador, char palavra[TAM] ){ if ( palavra[contador] == 'o' ) { q5 ( ++contador, palavra ); } else { qErro(); } } void q3( int contador, char palavra[TAM] ){ if ( palavra[contador] == 'r' ) { q4 ( ++contador, palavra ); } else { qErro(); } } void q4( int contador, char palavra[TAM] ){ qFim(); } void q5( int contador, char palavra[TAM] ){ if ( palavra[contador] == 'a' ) { q6 ( ++contador, palavra ); } else { qErro(); } } void q6( int contador, char palavra[TAM] ){ if ( palavra[contador] == 't' ) { q7 ( ++contador, palavra ); } else { qErro(); } } void q7( int contador, char palavra[TAM] ){ qFim(); } void q8( int contador, char palavra[TAM] ){ if ( contador < TAM ){ if ( palavra[contador] == 'h' ){ q9( ++contador, palavra ); }else{ qErro(); } } } void q9( int contador, char palavra[TAM] ){ if ( palavra[contador] == 'a' ) { q3 ( ++contador, palavra ); } else { qErro(); } } void qErro(){ printf("Palavra regeitada pelo automata!\n"); } void qFim(){ printf("Palavra Aceita pelo automata!\n"); } Pode inserir qualquer palavra na string que esta na primeira linha do for porem o programa só aceitará uma das 3 que citei no inicio. De uma estudada e se tiver duvidas pergunte. Tente resolver com isso pois é muito potente esse sistema.
  8. trocar &hazzu.n por hazzu.n no printf
  9. para saber se o arquivo ta vazio ou não da uma olhada no tamanho do arquivo. Averigue se o tamanho do arquivo é o mesmo do sizeof da tal struct que você enviou para o arquivo. você pode usar um editor hexadecimal para ver o conteúdo do tal arquivo binário. Ah!!! E o mais importante é que se é arquivo binario o modo de abertura deveria ser w+b 😉
  10. Sempre tenha claro em qual linguagem você está. Dependendo da linguagem você vai ter que traduzir de 1 até 10 em 0 até 9. Porque em algumas linguagens começa a contar de zero. Parece uma coisa banal mas não é... os índices em C/C++ lembre que você está trabalhando diretamente com a memória ram, qualquer erro é fatal.😉
  11. o pior de todos os erros é esse i <= 10. Se você tem 10 posições você conta desde 0 até 10-1, ou seja 9. O correto é i < 10, você ta estourando os índices tentando ler e escrever além do que você reservou.
  12. Isso é errado, usar fflush junto com stdin. fflush foi concebido para ser usado com stdout, o fato de que funcione é pura sorte. Existe uma infinidade de formas sobre como limpar o buffer do teclado na internet. acho que você deveria dar uma olhada aqui: https://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/ É uma leitura indispensável já que lhe fará compreender melhor sobre o buffer do teclado, que é um problema que você vai se enfrentar a diário, por isso é indispensável. Recomendo ler com atenção e ir pondo em prática tudo o que for vendo neste post.
  13. si você declarou p como um vetor p[1000] na linha gets ( p.nome ) ; o p.nome ta errado. O p.nome é um vetor e não uma variável normal, o correto seria p[x].nome, sendo o x o índice desejado. Ademais use o botão <> para postar códigos-fonte