Função não está funcionando devidamente...

C++

27/11/2019

Então, estava escrevendo um RPG em Linguagem C, e criei uma função que imprimiria as falas de modo lento, como se estivesse digitando.


Esse seria meu código:


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

void tempo(float n){
fflush(stdout);
usleep(n*1000000);
}

char str[255];

void fala(char str[255]){
for (int i; i<strlen(str); i++){
printf("%c", str[i]);
tempo(0.1);
}
}


int main(void) {

fala("Hello World Hello World Hello World Hello World\n\n");
fala(strcpy(str, "OI\n"));

return 0;
}


A princípio tudo funciona certinho... Mas a partir do momento em que eu uso a função várias vezes, ela começa a cortar pedaços da minha string.


Alguém sabe o que estou fazendo de errado ou uma alternativa?
Gabriela

Gabriela

Curtidas 0

Respostas

Bruno Pardim

Bruno Pardim

27/11/2019

Seu código funciona certinho, só ajustei o tempo:


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

void tempo(float n){
fflush(stdout);
usleep(n*5000); //Exemplo 1 segundo é igual a usleep(1000000)
}

char str[255];

void fala(char str[255]){
for (int i; i<strlen(str); i++){
printf("%c", str[i]);
tempo(5);
}
}


int main(void) {

fala("Hello World Hello World Hello World Hello World\\n\\n");
fala(strcpy(str, "OI\\n"));

return 0;
}

GOSTEI 0
Gabriela

Gabriela

27/11/2019

Na verdade, o problema original ainda persiste... Pois em alguns momentos a string é "cortada".
Por exemplo, se eu coloco a palavra "golfinho", às vezes imprime certo, às vezes só imprime o "inho", e às vezes nem imprime nada.
GOSTEI 0
POSTAR