Ajuda em C

1 resposta
B
Pessoal como eu faço para imprimir o tamanho de cada palavra numa frase.

Exemplo. Joao caiu do pe de feijao.

1 palavra tem tamanho -> 4
2 palavra tem tamanho -> 4
3 palavra tem tamanho -> 2
4 palavra tem tamanho -> 2
5 palavra tem tamanho -> 2
6 palavra tem tamanho -> 6

to tentado fazer. fiz esse código por enquanto, mas nao deu certo , ele imprimi o total da frase.

printf("Informe uma frase ou palavra qualquer\n");
gets(frase);
fflush(stdin);

for(i=0; i<=strlen(frase); i++){
       
      espaco =0; 
      if(frase[i] == ' '){ 
      espaco ++;
      
        if(espaco == 0){
        tamanho = strlen(frase);
        printf("%d\n",tamanho);          
        }
             
      }//fecha o if 
           
            
   }//fecha o for       
       
       
getch();       
}

1 Resposta

matheuslmota
Você pode usar o método strtok do header string.h para quebrar a frase de acordo com os espaços em branco das palavras:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
    char frase[] = "O rato roeu a roupa do Rei de Roma.";
    char* token;
    token = strtok(frase, " ");
    while((token = strtok(NULL, " ")) != NULL)
        printf("%s\n",token);
    return 0;
}
Depois é só usar o strlen para obter o tamanho de cada palavra. O método strtok recebe dois parâmetros, a string a ser quebrada e o caracter de quebra. Como queremos quebrar a string nos pontos onde tem espaço em branco, usamos " ". Se você quisesse quebrar a string em pontos onde existem virgula, você passaria "," no segundo parâmetro. Observe que na primeira chamada da função você passa o ponteiro da string a ser quebrada como primeiro parâmetro e nas chamadas seguintes você passa o ponteiro nulo.
Criado 24 de novembro de 2012
Ultima resposta 24 de nov. de 2012
Respostas 1
Participantes 2