Ir ao conteúdo

C Renomear arquivos em c


Ir à solução Resolvido por Lucca Rodrigues,

Posts recomendados

Postado

Boa noite pessoal, estou desenvolvendo um programa para o seguinte problema:

 

"Faça um programa que leia um arquivo de texto contendo um poema e exiba na tela quantos versos e quantas estrofes tem o poema, sendo cada verso uma linha com palavras e cada estrofe um bloco de versos separado do bloco anterior por uma linha em branco. O nome do arquivo deverá ser informado pelo usuário e o arquivo não deverá ser alterado.

 

Exemplo: O arquivo com o poema a seguir tem 4 versos e 2 estrofes:

Batatinha quando nasce

Espalha a rama pelo chão

 

Menininha quando dorme

Poe a mão no coração

 

Dica: Uma linha em branco não é um verso.

 

Atenção: O programa deverá obrigatoriamente manipular arquivos texto."

 

A parte de contar os versos e estrofes eu consegui fazer, mas não tem jeito de dar certo pra renomear o arquivo como o exercício pede.

 

O que desenvolvi até o momento é o seguinte:

 

#include <stdio.h>
#include <locale.h>


int main (){

    setlocale(LC_ALL, "Portuguese");

    FILE * fp;
    int versos = 0, estrofes = 0;
    char texto[100];
    fp = fopen("poema.txt", "r");
    if(fp == NULL)
    {
        printf("Erro ao abrir o arquivo!");
        return 0;
    }

    printf("Poema:\n");
    while(!feof(fp))
    {
        fgets(texto, 100, fp);
        printf("%s", texto);
        if (strlen(texto) < 99 && strlen(texto) > 1)
        {
            versos++;
        }
        else if (strlen(texto) == 1)
        {
            estrofes++;
        }
    }
    if (versos == 0)
    {
        printf("\nArquivo vazio");
    }
    else
    printf("\n\nO arquivo com o poema acima tem %d versos e %d estrofes.\n", versos, estrofes+1);

    fclose(fp);
    return 0;
}

 

Sendo que o arquivo.txt está salvo na mesma pasta que o programa e já está com o poema gravado nele.

 

Alguém pode me ajudar??? 

  • Curtir 1
  • Solução
Postado

@Julia_Lucia Onde está a parte de renomear o arquivo no enunciado? Está bem claro lá que o arquivo não pode ser alterado:

10 horas atrás, Julia_Lucia disse:

O nome do arquivo deverá ser informado pelo usuário e o arquivo não deverá ser alterado.

 

Veja o protótipo de fopen():

FILE *fopen(const char *filename, const char *mode)

O parâmetro filename é a string contendo o nome do arquivo a ser aberto, então é isso o que o programa deverá pedir ao usuário.

Você poderia fazer algo assim:

char file[101];

printf ("Digite o diretório do arquivo texto:\n");
scanf ("%100s", file);

FILE * fs = fopen (file, "r");

if (fs == NULL) {
    printf("\nNão foi possível abrir o arquivo!");
    exit(1);
}
  • Obrigado 2
Postado

@Lucca Rodrigues Estava errando uma coisa muito boba. Quando fui digitar a ideia que você passou usei aspas simples no r e por isso não estava funcionando. Agora está tudo certo. Muito obrigada!!!

O código final ficou assim:

#include <stdio.h>
#include <locale.h>

int main (){

    setlocale(LC_ALL, "Portuguese");

    int versos = 0, estrofes = 0;
    char texto[100], nome[501];

    printf ("Digite o diretório do arquivo texto: ");
    gets(nome);

    FILE * fp = fopen (nome, "r");
    if(fp == NULL)
    {
        printf("Erro ao abrir o arquivo!");
        return 0;
    }

    printf("\nPoema:\n\n");
    while(!feof(fp))
    {
        fgets(texto, 100, fp);
        printf("%s", texto);
        if (strlen(texto) < 99 && strlen(texto) > 1)
        {
            versos++;
        }
        else if (strlen(texto) == 1)
        {
            estrofes++;
        }
    }
    if (versos == 0)
    {
        printf("\nArquivo vazio");
    }
    else
    printf("\n\nO arquivo com o poema acima tem %d versos e %d estrofes.\n", versos, estrofes+1);

    fclose(fp);
    return 0;
}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!