Boa tarde gente, eu fiz um código porém não estou entendendo o motivo dele estar calculando errado os caracter, ele funciona assim, ao executar ele, ele te pede para escrever uma frase, palavra, após isto ele te pergunta um numero positivo, no caso se você colocar 8 ele pegará so as palavras que tem 8 caracter ou mais, mas quando escrevo por exemplo ( Leonardo luis palavra) ele puxa o Leonardo( tem 8 caracter) e o Palavra( que tem 7).
Agradeço qualquer ajuda desde já.
#include <stdio.h>
main()
{
char texto[101] = {};
int n = 0;
int caractere = 0;
int contador = 0;
int posini = 0;
int j=0;
printf("Digite um texto: \n");
gets(texto); // lê a string com espaços (scanf não armazena espaços)
printf("\nDigite um numero inteiro positivo: \n\n"); //Lê um nro que serão tamanho da substring
scanf("%d", &n);
for (caractere=0; texto[caractere]!='\0'; caractere++) { //Leitura dos caracteres da string \0 Fim da string
if (texto[caractere] == ' ') {
if (contador>=n) {
for (j=posini; j<caractere; j++) printf("%c", texto[j]);
printf("\n");
contador=-1;
}
posini=caractere+1;
}
contador++;
}
if (contador>=n) {
for (j=posini; j<caractere;j++) printf("%c", texto[j]);
printf("\n");
}
}