Ir ao conteúdo
  • Cadastre-se
josé aldo99

C Problema com funções e ponteiros

Recommended Posts

Seguinte pessoal, eu tenho que criar um programa que leia conteúdo de alguns arquivos e procure por certas palavras chave nele, eu estava criando ele mas chego em um ponto que não compila mais, vou explicar detalhadamente o que planejei  pra vocês poderem me ajudar melhor: 

1-Criar as seguintes funções:

1.1-Criar função para abrir arquivo

1.2-Ler arquivo e contar tamanho(qtos caracteres ocupa)

1.3-Função para criar vetor com tamanho exato do 1.2 ( TRAVEI AQUI )

1.4-Comparar qtas vezes aparece (ainda não fiz)

1.5-Criar lista encadeada (para armazenar qtas vezes aparece etc. e já ir indexando pois podem ser qtos o usuário quiser) (também não fiz)

 

O compilador não prossegue a partir do 1.3, queria saber onde eu tô errando, honestamente não faço a menor ideia, grato pela atenção!!!

 

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


void create(FILE *fp,int x){                                        /** Cria um vetor alocado dinamicamente */

char *v;
int i=0;
char ch;

v=(char *)malloc(x*sizeof(char ));

ch=getc(fp);

while(ch!=EOF){
  i=++i;
  ch=getc(fp);
  v=ch;
  printf("%c",v);
              }
                          }

int read_arq(FILE *fp){                              /**< Função que le texto(cont.do arquivo) e conta o tamanho de caracteres (para alocar vetor)*/

    int a=0;

    char ch;

    ch = getc(fp);

    while (ch!=EOF) {
    a=++a;
    putchar(ch);
    ch = getc(fp);
                    }

    printf("%d",a);

    return a;

                     }

void procura_palavra(FILE *fp, char palavra[60]){

    int num;                                             /**< variavel usada para contar qtd. de posições no vetor */

    char *x;                                           /**< a ser usada em strcmp 1.4 */

    scanf("%s",&palavra);

    num=read_arq(fp);


    printf("\n-------------------------\n-->%d",num);

                                                 }

int abre_arquivo(){                                  /** Abre o arquivo texto desejado */

  char nome[20];

  char busca[60];

  FILE *fp = 0;                                            /** Ponteiro do arq. a ser lido */

  scanf("%s",nome);                                      /** Nome do arquivo a ser lido */

  fp = fopen(nome,"r");

  if ( (fp=fopen(nome,"r")) == NULL ){

    printf("Erro!!!");

    exit(1);
  }

  else
    printf("________busca:\n");

    procura_palavra(fp,busca);

}

 

int main(int argc, char **argv[]){

    abre_arquivo();

    return 0;
}
 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@josé aldo99    no 1.3 você quer criar um vetor com a quantidade de caracteres que tem no arquivo, então quando retornar da função  (  int read_arq(FILE *fp){       )   você cria o vetor com a valor de retorno,   assim :

retorno = read_arq(FILE *fp);     
int vetor[retorno];

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este programa retira palavra por palavra de um txt.
 

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

int main(){

    FILE *f = fopen("teste.txt", "r");
    char buffer[100];

    while( fscanf(f,"%s", buffer) != EOF ){
        printf("%s\n", buffer);
    }


    fclose(f);
    return 0;
}

Com umas poucas modificações e melhorias é possível fazer o que você quer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×