Ir ao conteúdo

C como contrar letras de uma palavra da string


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

Você pode escanear a string com um for, enquanto não esbarrar no \0 (ou seja, no final):

 

for (int n = 0; string[n] != '\0'; ++n)

 

Ou, usar a função strlen() da biblioteca string.h:

 

size_t total = strlen(string);


 

  • Obrigado 1
Postado
1 hora atrás, Nelsonderocha disse:

gostaria de saber como contar as letras de cada palavra em uma string

você pode usar o comando strleng assim:

int tm = strleng(suastring)

Ou simplesmente fazer um laço for:

int i=0;
for(; suastring[i]!='\0'; i++)
{


}

o i é o resultado que busca

Sucesso pra você

10 minutos atrás, V!OLADOR disse:

Você pode escanear a string com um for, enquanto não esbarrar no \0 (ou seja, no final):

 

for (int n = 0; string[n] != '\0'; ++n)

 

Ou, usar a função strlen() da biblioteca string.h:

 

size_t total = strlen(string);

Desculpa... ficou parecendo que eu copiei de você.
Não tinha o post na hora que eu postei vi que o seu já tinha entrado.
 

  • Solução
Postado

Terá que fazer um loop para pegar as letra da string e cada palavra será identificada quando testar o espaço. Use um contador para mostrar a quantidade e recomece a contagem quando esse teste for verdadeiro.

  • Obrigado 1
Postado
5 horas atrás, Midori disse:

Terá que fazer um loop para pegar as letra da string e cada palavra será identificada quando testar o espaço. Use um contador para mostrar a quantidade e recomece a contagem quando esse teste for verdadeiro.

void contadorL(char string[100]){
    int i=0, cont=0,j=0, vet[contadorP(string)];

    while(string[i]!= '\0'){
        cont++;
        if(string[i]== ' '){
          vet[j]=cont-1;
          cont=0;
            j++;
          }
          i++;
    }

    for(i=0; i<contadorP(string); i++){
        printf("%d\t", vet[i]);
    }

}

fiz essa funcao para contar, mas a ultima palavra sempre fica contada errada

Postado
1 hora atrás, Nelsonderocha disse:
void contadorL(char string[100]){
    int i=0, cont=0,j=0, vet[contadorP(string)];

    while(string[i]!= '\0'){
        cont++;
        if(string[i]== ' '){
          vet[j]=cont-1;
          cont=0;
            j++;
          }
          i++;
    }

    for(i=0; i<contadorP(string); i++){
        printf("%d\t", vet[i]);
    }

}

fiz essa funcao para contar, mas a ultima palavra sempre fica contada errada

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

main(void){
    char string[100], rep;
    int matriz[contadorP(string)][2], i, j;

        printf("informe uma string: ");
        gets(string);
        printf("A string tem %d palavras", contadorP(string));
        printf("\n=== VETOR ===\n");
        contadorL(string);
        
}

int contadorP(char string[100]){
    int cont=0, i=0, x=0;
     while(string[i] != '\0')
        {
            if(string[i] != ' ' && x == 0)
            {
                cont++;
                x = 1;
            }
            else if(string[i] == ' ')
            {
                x = 0;
            }
            i++;
        }
        return(cont);
}

void contadorL(char string[]){
    int i=0, cont=0,j, vet[contadorP(string)];
    j=0;
    while(string[i] != '\0'){
        cont++;
        if(string[i]==' '){
          vet[j]=cont-1;
          cont=0;
            j++;
          }
          i++;
    }

    for(i=0; i<contadorP(string); i++){
        printf("%d\t", vet[i]);
    }

}

o codigo inteiro, conta quantas palavras tem a string e faz  um vetor com quantas letras tem cada palavra, mas a ultima palavra conta errado

Postado
13 horas atrás, V!OLADOR disse:

😁 Sem problemas

Eu percebi que ele quer é alem do que postamos.
É palavra. E não apenas string o que ele quer.
 

 

13 horas atrás, Midori disse:

Terá que fazer um loop para pegar as letra da string e cada palavra será identificada quando testar o espaço. Use um contador para mostrar a quantidade e recomece a contagem quando esse teste for verdadeiro.

Midori foi muito bom observador. As vezes eu pego a questão e coisas assim me passam desapercebidas.

Postado

Outra forma sem vetor é mostrando a quantidade no mesmo loop que conta as letras,

 

#include <stdio.h>

int main(void)
{
    char texto[50];
    int conta = 1;

    printf("Informe uma string: ");
    fgets(texto, 50, stdin);
    
    for(int i = 0; texto[i] != 0; i += 1)
    {
        conta += 1;
        if(texto[i + 1] == ' ' || texto[i + 1] == 0)
        {
            if(texto[i] == '\n')
            {
                conta -= 1;
            }
            printf(" %d", conta - 1);
            conta = 0;
        }
    }
    return 0;
}

 

Postado
9 horas atrás, codigo rápido disse:

Eu percebi que ele quer é alem do que postamos.


É verdade! Só atinei pro detalhe agora. Tenho que me educar a pousar os olhos nas perguntas das pessoas por um pouco mais de 1 mili-segundo antes de responder 🤣.

Valeu, @Midori!

  • Curtir 1
  • Obrigado 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!