Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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






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

×