Ir ao conteúdo

Posts recomendados

Postado

 *Escreva um programa que compare dois arquivos especificados pelo usuário e imprima sempre que os caracteres dos dois coincidirem (na mesma posição).

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

void main()
{
    FILE *p;
    char c, str[30];
    int i = 0;
    /* Le um nome para o arquivo a ser aberto: */
    printf("\n\n Entre com um nome para o arquivo:\n");
    gets(str);

    /* Abre para leitura */

    if (!(p = fopen(str,"r"))) /* Caso ocorra algum erro na abertura do arquivo..*/
    {   /* o programa aborta automaticamente */
        printf("Erro! Impossivel abrir o arquivo!\n");
        exit(1);
    }

    while (!feof(p)) /* Enquanto não se chegar no final do arquivo */
    {
        c = getc(p); /* Le um caracter no arquivo */
        i++;                 /* E incrementa i */
    }
    fclose(p); /* Fecha o arquivo */
    printf("\nO numero de caracteres do arquivo %s e igual a %d ", str, i);
}

 

  • Amei 1
Postado
    gets(str);

    /* Abre para leitura */

    if (!(p = fopen(str,"r"))) /* Caso ocorra algum erro na abertura do arquivo..*/
    {   /* o programa aborta automaticamente */
        printf("Erro! Impossivel abrir o arquivo!\n");
        exit(1);
    }

 

  • não use gets(). Nunca. Não existe em todas as plataformas, está no padrão apenas para ser marcada como obsoleta e lentamente esquecida, além de ser uma ideia ruim por si só. Sempre é uma porta para cancelar seu programa, a toa.
  • um programa não "aborta automaticamente". Chamar exit() encerra o programa, calma, tranquila e previsivelmente
  • seu programa para ler dois arquivos abre um só e termina. O que significa?
Postado

@paulo luz magalhaes    seu código não está compilando por que você não informou o tipo de arquivo que está tentando abrir ,  e para isso precisa da biblioteca

#include <string.h>

, e usar a função strcat ,  e para usar a função fgets precisa remover o newline , e poderia ser assim  :

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    FILE* p, *q;
    char c,d, str[30];
    int i = 0;
    printf("\n\n Entre com um nome para o Primeiro arquivo:\n"); //  Le um nome para o arquivo a ser aberto: 
    fgets(str,29,stdin);
    str[strlen(str) - 1] = '\0';
    strcat(str, ".txt");
    p = fopen(str, "r");                                         //  Abre para leitura 
    if (!p)                                                      //  Caso ocorra algum erro na abertura do arquivo..
    {                                                            //  o programa aborta automaticamente 
        printf("Erro! Impossivel abrir o arquivo!\n");
        exit(1);
    }
    printf("\nEntre com um nome para o segundo arquivo:\n");     //  Le um nome para o arquivo a ser aberto: 
       -
       -
    igual ao primeiro arquivo 
       .
       .
    while (!feof(p))                                             //  Enquanto não se chegar no final do arquivo
    {
        c = getc(p);                                             //  Le um caracter no arquivo 
        d = getc(q);                                             //  Le um caracter no arquivo 
        if (feof(q))break;
        if(c == d )
            printf("%c", c);
        i++;                                                     //  E incrementa i 
    }
    fclose(p);                                                   //  Fecha o arquivo p
    fclose(q);                                                   //  Fecha o arquivo q
    printf("\nO numero de caracteres do arquivo %s e igual a %d ", i,str);
    return 0;
}

 

  • Obrigado 1
Postado

@paulo luz magalhaes Oiih! Penso que erro a cópia.

 

O ,@devair1010  editou o código num procedimento que compara dois arquivos texto, conforme enunciado.

 

Mas, originalmente, é um procedimento que conta quantos caracteres há no arquivo texto e sim o código compila.

Se precisar mais, pergunte e forneça descrição da falha que impediu o compilador.

 

Ok, valeu.

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!