Ir ao conteúdo
  • Cadastre-se

C dividir uma string em varias sub strings em C


matheuscrluiz

Posts recomendados

Prezados, boa noite.

 

Preciso fazer um programa que é: "calcular quantas vezes cada palavra aparece em uma string", pensei em diversas formas e não obtive sucesso com o que tenho em mente.

 

Meu programa divide a frase em várias quando se depara com um espaço digitado pelo usuário. Porém, como posso fazer para ARMAZENAR essas palavras que dividi em uma outra string?

 

 

Desde já, obrigado.

 

Segue o código que fiz até agora:

#include <stdio.h>
#include <string.h>

int main(void) 
{
    char frase[80];
	printf("\nDigite: ");
	fgets(frase,80,stdin);
    int tamanho = strlen(frase); 
    char *token = strtok(frase, " ");
    for (int i = 0; i < tamanho; i++) {
        printf(token[i] == 0 ? "\\0" : "%c", token[i]);
    }
    while(token != NULL) {
        printf("\n%s", token);
        token = strtok(NULL, " ");
    }
}

 

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@matheuscrluiz      para quê colocar as palavras em outra string ?   você pode armazenar as palavras em huma matriz de char e depois pode compara-las para saber quais as que se repetiram na frase ,  então seu código poderia ser assim  :

#include <stdio.h>
#include <conio.h>
#include <string.h>

int main(void){
    char frase[80],mat[10][1][20],
         aux[20], outraString[80];
    int j,k=0,w=0,l=0;
    strcpy(outraString,"");
    printf("\nDigite : ");
    fgets(frase,80,stdin);/* fgets pega assim : frase com todas as palavras\n\0 */
    int tamanho = strlen(frase);
    while(frase[k]!='\n'){/* pegando cada palavra da frase */
        aux[w]=frase[k];
        if(frase[k] == ' ' || frase[k+2] == '\0' ){
            if(frase[k+2]=='\0')w++;
            aux[w]='\0';
            strcat(outraString,aux);  /* coloca cada palavra na outra string    */
            strcat(outraString," . ");/* se quiser pode delar essa linha        */
            strcpy(mat[l][0],aux);    /* armazenar as strings no c              */
                                      /* no c++ basta fazer mat[l][0]=aux       */
            w=-1;                     /* para voltar a zero                     */
            l++;
        }
        k++;
        w++;
    }
    printf("Conte%cdo da Matriz :\n",163);
    for(j=0;j<l;j++)printf("%s ",mat[j][0]);
    printf("\n\nA Outra String -> %s\n",outraString);
    /*char *token = strtok(frase, " ");
    for (int i = 0; i < tamanho; i++) {
        printf(token[i] == 0 ? "\\0" : "%c", token[i]);
    }*/
    /*while(token != NULL) {
        printf("\n%s", token);
        token = strtok(NULL, " ");
    }*/
    printf("\n\n\n");
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!