Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
pessantiago

escrever em ficheiros

Recommended Posts

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;
}

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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;
}

Share this post


Link to post
Share on other 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;
}

Share this post


Link to post
Share on other sites
pessantiago

se eu agora quiser copiar o conteudo que escrevi para outro como devo proceder?

Share this post


Link to post
Share on other 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;
}



Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.