guma 0 Denunciar post Postado Outubro 4, 2004 Ai moçada gostaria de saber como eu escrevo em arquivo txt meu codigo é este Nao consigo fazer rodar este programa meu objetivo seria de cadastrar clientes via arquivo txt Alguem pode me ajudar por favor !!!!!!!!!!!!!!!!!!! Falou #include <stdio.h>#include <stdlib.h>#include <string.h>#define arquivo_original "cadastro.txt"int main( ){ //INICIO DECLARAÇÃO DAS VARIAVEIS char usuario; int senha; int acesso; int op; //FIM //INICIO DA DECLARAÇÃO DOS PONTEIROS FILE *fporg //PONTEIRO DO ARQUIVO ORIGINAL FILE *fpnew //PONTEIRO DO ARQUIVO NOVO char uclinein[300]; //FIM // TELA INICIAL printf ("\n 1- CADASTRAR CLIENTES:"); printf ("\n 2- SAIR: " ); scanf ("\n %d",op); if (op==1) { printf (" Usuario :"); scanf ("\n %s", usuario); printf (" Senha :"); scanf ("\n %d", senha); pont_cadastro = fopen (arquivo_original, "w"); } fclose(fporg); fclose (fpnew);} Compartilhar este post Link para o post Compartilhar em outros sites
Athene 1 Denunciar post Postado Outubro 25, 2004 OI!!! Bom, dei uma alterada no teu código. Duas coisas que estavam faltando no código que tu postaste na tua mensagem: Para o scanf os argumentos devem ser passados por referência – permitindo que o conteúdo do argumento seja alterado (para isso colocasse o operador & antes do nome da variável). As strings são lidas como matrizes, e o nome de uma matriz sem qualquer índice é o endereço do primeiro elemento, para ler uma string não é necessário o operador &. Então, para pegar o valor da senha que foi digitada a função ficaria assim: scanf ("\n %d",&senha); No código que escreveste o arquivo só seria aberto se a opção escolhida fosse 1 (já que o comando fopen está dentro do if). Porém, tu estavas tentando fechar o arquivo mesmo que ele não fosse aberto ( ou seja, mesmo que não fosse escolhida a opção 1 ou que o arquivo não pudesse ser aberto ele “tentaria” ser fechado.) Eu alterei o código. É só um exemplo baseado no teu. Espero que ele te ajude... #include <stdio.h>#include <stdlib.h>#include <string.h>#define arquivo_original "cadastro.txt"int main( ){//INICIO DECLARAÇÃO DAS VARIAVEISchar usuario;int senha;int acesso;int op;//FIM//INICIO DA DECLARAÇÃO DOS PONTEIROSFILE *fporg; //PONTEIRO DO ARQUIVO ORIGINALchar uclinein[300];//FIM// TELA INICIALprintf ("\n 1- CADASTRAR CLIENTES:");printf ("\n 2- SAIR: " );scanf ("\n %i",&op); //passa o argumento op por referência para a função scanfif (op==1){ printf (" Usuario :"); scanf ("\n %s", &usuario); //passa o argumento usuario por referência para a função scanf printf (" Senha :"); scanf ("\n %i", &senha); ); //passa o argumento senha por referência para a função scanf // Tenta abrir o arquivo. if((fporg = fopen("nome_do_arquivo", "w"))== NULL) ); { // Se houver algum erro na abertura do arquivo escreve uma mensagem de erro e sai do programa printf("O arquivo não pôde ser aberto.\n"); exit(1); } else { printf (" Cliente :"); // se o arquivo foi aberto pega os dados do cliente e insere na string uclineim scanf ("\n %s", uclinein); fputs(uclinein ,fporg); //grava os dados no arquivo de texto fclose(fporg); // fecha o arquivo }}} Ah, a função fputs é só uma das funções que o C tem para escrever em arquivos de texto.Ela escreve uma sentença inteira no arquivo. Tu podes usar outras funções como o putc que insere um único caractere por vez (tu terias que escrever caractere por caractere do teu texto...). Se precisares de mais alguma ajuda é só postar outra mensagem... Beijos... Dani Compartilhar este post Link para o post Compartilhar em outros sites
DAVIFN 0 Denunciar post Postado Novembro 16, 2012 Athene, não seria melhor um fwrite/fprintf(%s) do que um fputs? Li em um tópíco que fputs gera erros... Compartilhar este post Link para o post Compartilhar em outros sites