Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

pessantiago

escrever em ficheiros

Mensagens Recomendadas

pessantiago

boas tenho este codigo mas não esta a funcionar la muito bem e eu queria que isto funcionasse,ou seja introduzo nomes e termina quando introduzir 0 podem me ajuda help!!

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
    FILE *escrever;
    char buffer[100],nome;
    int i;
    printf("nome do ficheioro\n");
    scanf(" %c",nome);
    escrever=fopen(nome,"w");
    if(escrever==NULL)
    {
        fprintf(stderr,"erro abrir o ficheiro",escrever);
    return 32;
    }

        do
            {
                do
                {
                    printf ("Introduza um nomes");
                    printf ("Introduza 0 para terminar\n");
                    scanf ("%s", &buffer);
                }
                while (strlen(buffer) > 100);
                if (buffer[0] != '0')
                {
                    for (i=0; buffer[i] != '\0'; i++)
                        fputc (buffer[i], escrever);
                    fputc ('\n', escrever);
                }
            
            }

fclose(escrever);
return 0;
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Localhost

Algo assim:

do {
  scanf("%s", buffer);
  ...
}while(buffer[0] != '0');

Claro que o código está muito reduzido mas a ideia principal é esta.

Se quiseres algo instantâneo, utilizar a getchar e verifica.


here since 2009

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pessantiago
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
    FILE *escrever;
    char buffer[100],nome;
    int i;
    printf("nome do ficheioro\n");
    scanf(" %c",nome);
    escrever=fopen(nome,"w");
    if(escrever==NULL)
    {
        fprintf(stderr,"erro abrir o ficheiro",escrever);
    return 32;
    }

        do
            {
                do
                {
                    printf ("Introduza um nomes");
                    printf ("Introduza 0 para terminar\n");
                    scanf ("%s", &buffer);
                }
                while (strlen(buffer) > 100);
                if (buffer[0] != '0')
                {
                    for (i=0; buffer[i] != '\0'; i++)
                        fputc (buffer[i], escrever);
                    fputc ('\n', escrever);
                }

            }
             while (buffer[0] != '0');
            fclose (escrever);      //Fechar o ficheiro



return 0;
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pessantiago

resolvi

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
    FILE *escrever;
    char buffer[100],nome;
    int i;
    escrever=fopen("escrever.txt","w");
    if(escrever==NULL)
    {
        printf("erro abrir o ficheiro");
    return 32;
    }

        do
            {
                do
                {
                    printf ("Introduza um nomes\n");
                    printf ("Introduza 0 para terminar\n");
                    scanf ("%s", buffer);
                }
                while (strlen(buffer) > 100);
                if (buffer[0] != '0')
                {
                        for (i=0; buffer[i] != '\0'; i++)
                        fputc (buffer[i],escrever);
                        fputc ('\n', escrever);
                }

            }
             while (buffer[0] != '0');
            fclose (escrever);      //Fechar o ficheiro



return 0;
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pessantiago

esta versão podes escrever no ficheiros e copiar de um ficheiro para o outro

se conseguirem optimizar este código era Nice

#include <stdio.h>
#include <stdlib.h>
#include<string.h>

int escreveporcima(char * nome)
{   char resposta;
    FILE *f;
    f=fopen(nome,"r");
    if(f==NULL) //nao existe
    return 1 ;//escreve a vontade
printf("%s ja existe.escreve por cima(s/n)?\n",nome);
scanf(" %c",&resposta);
if (resposta =='s')
{return 1;
}
return 0;
}

int main()
{
    FILE *escrever, *ler;
    char buffer[100],linha[200];
    int i;

    escrever=fopen("escrever.txt","w");

        if(escrever==NULL)
        {
        printf("erro abrir o ficheiro");
        return 0;
        }
         do
            {
                do
                {
                    printf ("Introduza um nomes\n");
                    printf ("Introduza 0 para terminar\n");
                    scanf ("%s", buffer);
                }
                while (strlen(buffer) > 100);
                    if (buffer[0] != '0')
                        {
                        for (i=0; buffer[i] != '\0'; i++)
                        fputc (buffer[i],escrever);
                        fputc ('\n', escrever);

                        }
                    }

             while (buffer[0] != '0');

        fclose (escrever);      //Fechar o ficheiro

    int n=1;
    printf("insira o nome do ficheiro\n");
    scanf("%s",buffer);
   escrever=fopen(buffer,"r");

    if (escrever==NULL)
    {
        printf("erro abrir o ficheiro \n");
        return 0;
    }

    printf("insira o nome do ficheiro\n");
    scanf("%s",buffer);
        if(!escreveporcima(buffer)){
        fclose(escrever);
        return 0;
        }
    ler=fopen(buffer,"w");
    if (ler==NULL)
    {
        printf("erro abrir o ficheiro \n");
        return 0;
    }

    while (fgets(linha,1024,escrever)!=NULL)
    {


        fprintf(ler,"%s",linha);
        printf("%2d: %s",n,linha);
        n++;
    }


fclose(escrever);
fclose(ler);
return 0;
}



Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Localhost

Não precisas de pôr o if.

Fica assim:

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
    FILE *escrever;
    char buffer[100],nome;
    int i;
    escrever=fopen("escrever.txt","w");
    if(escrever==NULL)
    {
        printf("erro abrir o ficheiro");
    return 32;
    }

        do
            {
                do
                {
                    printf ("Introduza um nomes\n");
                    printf ("Introduza 0 para terminar\n");
                    scanf ("%s", buffer);
                }
                while (strlen(buffer) > 100);
                /*if (buffer[0] != '0')
                {*/
                        for (i=0; buffer[i] != '\0'; i++)
                        fputc (buffer[i],escrever);
                        fputc ('\n', escrever);
                /*}*/

            }
             while (buffer[0] != '0');
            fclose (escrever);      //Fechar o ficheiro



return 0;
}


here since 2009

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.