-
Total de itens
883 -
Registro em
-
Última visita
Tudo que vangodp postou
-
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.
-
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.
-
E qual sua duvida?
-
Ta passando deveres aqui pra galera?
-
#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
-
ao compilar o codigo, n aparace o nome da pessoa
pergunta respondeu ao henriquedepaulo de vangodp em C, C++
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? >_< -
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.
-
trocar &hazzu.n por hazzu.n no printf
-
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 😉
-
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.😉
-
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.
-
Preciso de ajuda com gets () - Alguém consegue identificar o erro?
pergunta respondeu ao Savanna de vangodp em Grupo de Estudos
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. -
Preciso de ajuda com gets () - Alguém consegue identificar o erro?
pergunta respondeu ao Savanna de vangodp em Grupo de Estudos
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 -
n da para ver as imagens. suba a um servidor de fotos e ponha o link aqui. e use o botao <> para o código
-
Use o botão <> para postar códigos
-
Contrato alguém para fazer um trabalho em C
pergunta respondeu ao Scrpt123 de vangodp em Tutoriais & Dicas - C, C++
que tipo programa? -
Dúvida, funcionamento de função recursiva
pergunta respondeu ao Augusto-Lobo de vangodp em Tutoriais & Dicas - C, C++
quando n tiver chaves somente terá como efeito a seguinte instrução, neste caso o return 1;, por isso esta identado com 4 espaços. Para deixar claro o returne tem 2 funçoes, 1º deter a função e 2º retornar um valor. Uma função pode ter tantos return como desejar porem ao atingir o primeiro automaticamente sai da função nesse ponto. Uma função do tipo void tambem pode ter algum return porem sem valor. A seguinte função é perfeitamente valida: void foo(){ return; } note que não retorna valor algum, serve somente para deter a função neste ponto. Util quando desejar deter o programa em algum ponto depois de, por exemplo, fazer uma comprovação. Sobre if, si somente tiver uma instrução não precisa por chaves, o programa toma a seguinte linha de código como parte deste if, porem se tiver mais de uma linha, neste caso é obrigado a usar chaves, porque si não, como falei, o programa vai achar que somente uma linha pertence ao if, as demais ficam como fora. As chaves servem para informar ao programa que um bloco de instruçoes pertencem a um if anterior, ou a uma função, ou um for por exemplo. -
Como resolver esse problema de c++
pergunta respondeu ao valfmu2019 de vangodp em Tutoriais & Dicas - C, C++
Si pensar bem uma sala de cinema, olhando desde acima, parece uma matriz. Como bem podemos ver na foto, neste caso seria uma matriz de 13 por 8. É uma matriz de que?. Lógico que é uma matriz de poltronas. Então trata-se de structs pois cada poltrona tem um conjunto de dados, como idade, numero da poltrona etc. Crie uma matriz do tamanho que quiser e crie um menu com opções como vender entrada, listar a matriz, sair, etc. quando for vender a entrada primeiro pergunte a idade, se for menor de 16 indique n não é possível vender a tal entrada, caso contrario for maior de 16 então pergunte a poltrona. Lembre-se de averiguar se a poltrona esta ocupada, se for assim informe de que esta ocupada e volte a pedir outra poltrona. O programa pode ser complexo como você quiser, você até pode dar o valor em reais do total das poltronas que foram vendidas. -
#include <stdio.h> #include <stdlib.h> #define TAM 10 //Tamanho do vetor de structs #define ITE 3 //representa o numero de iterecoes que vai realizar cad laço for. Serve para limitar o numero de provas a realizar e assim n ter de preencher tantas vezes em cada caso de teste. struct dados { int numero; char nome[50]; }; void manipula_um_par ( int *a ) { if ( *a%2 == 0 ) *a = *a / 2; } void manipula_pares ( struct dados x[10] ) { int z; for ( z = 0; z < 10; z++ ) { if ( x[z].numero % 2 == 0 ) { manipula_um_par ( &x[z].numero ); } } //return &x[10].numero; } int main() { struct dados v[TAM]; int x; for ( x = 0; x < ITE; x++ ) { printf ( "\nDigite o nome do %d aluno: ", x + 1 ); fflush ( stdin ); fgets ( v[x].nome, 20, stdin ); printf ( "\nDigite o %d numero: ", x + 1 ); scanf ( "%d", &v[x].numero ); } manipula_pares ( v ); for ( x = 0; x < ITE; x++ ) { printf ( "--- %d ", v[x].numero ); } return 0; }
-
Ajuda para descomplicar o C++
pergunta respondeu ao nick programador de vangodp em Tutoriais & Dicas - C, C++
Boa noite. De forma padrão, tanto c como c++ não aceitam criar janelas, botões etc, porem a linguagem foi criada com a idéia de que poderia ser ampliada suas funcionalidades através de bibliotecas que são os tais arquivos de cabeçalho que incluímos ao principio, claro que as vezes não tão simples assim. O que você deve fazer é buscar uma biblioteca que lhe permita fazer isso, incluir novas funcionalidades que lhe permita criar interfaces de usuário, para c++ existe algumas como wxwidigets, qt, etc. Busque tutoriais, pdfs, etc sobre wxwidigets ou qt, ou sobre qualquer uma das bibliotecas que você escolher. Para saber quais bibliotecas existem sobre c++ escreva no google isso-> "interfaces gráficas c++". Da uma olhada nas diversas paginas que aparecer na busca e tente se decidir por uma. você pode buscar também "Melhor biblioteca gráfica para c++". Acredito que uma boa leitura antes de sair buscando tutoriais seria esta: https://br.ccm.net/faq/10999-bibliotecas-para-interfaces-graficas-gui -
Armazenar Palavras em um vetor
pergunta respondeu ao Marcos Winicios Pereira Martins de vangodp em Tutoriais & Dicas - C, C++
recomendo ver esses videos: https://www.youtube.com/watch?v=W-X2_v4Oyx8 https://www.youtube.com/watch?v=ixk5RIqABjI https://www.youtube.com/watch?v=wUrk9AK6ItY -
Armazenar Palavras em um vetor
pergunta respondeu ao Marcos Winicios Pereira Martins de vangodp em Tutoriais & Dicas - C, C++
scanf tem a "má" costume de ler até encontrar um espaço um tabulador ou encontrar o caractere '\n'. Prove usar o scanf desta forma: scanf("%[^\n]%*c", N); Com isso você será capaz de ler nomes com espaços. Procure aprender como limpar lixo do buffer, certamente você tem problemas com isso tambem, para isso vai no google e escreve algo parecido a "como limpar o buffer na linguagem C". -
eu tenho mingw mas não posso compilar
pergunta respondeu ao LuquinhasOg de vangodp em Tutoriais & Dicas - C, C++
o programa g++.exe se encontra dentro da pasta bin onde você instalou o compilador certamente você tenha que navegar até essa pasta usando cd etc. Outra opção é você declarar a tal pasta bin nas variaveis de ambiente assim funcionaria corretamente. Não funciona porque o comando correto seria indicando onde está o tal g++.exe, se você tivesse instalado ele no disco c seria algo como isso-> C:\mingw\bin\g++.exe Acredito que a forma mais facil é declarar a pasta bin no path do sistema. E sobre codeblocks.... Que erro da?