Questão 13: truncW
Voltar
Defina uma função void truncW (char t[], int n)
que dado um texto t
com várias palavras (as palavras estão separadas em t
por um ou mais espaços) e um inteiro n
, trunca todas as palavras de forma a terem no máximo n
caracteres.
Exemplo
> char txt[] = "liberdade, igualdade e fraternidade";
> truncW(txt, 4);
> txt
(char *) "libe igua e frat"
Resolução
void tail(char* s, int N) {
int i;
for(i = N; s[i]; i++)
s[i] = s[i+1];
}
int isSpace(char c) {
return (c == ' ' || c == '\n' || c == '\t');
}
void truncW (char t[], int n) {
int wordLen = 0, N = 0;
while(t[N]) {
if(isSpace(t[N])) {
wordLen = 0;
N++;
}
else {
wordLen++;
if(wordLen > n) tail(t, N);
else N++;
}
}
}