Я пытаюсь передать некоторые строки через espeak, и он читает их, но я получаю “ошибку сегментации”
Это мой код. Я хочу получить 5 строк от пользователя, и espeak читает каждую из них, когда пользователь ее закапывает. Но я получаю сообщение " ошибка сегментации(ядро сброшено)`.
#include <string.h> #include <malloc.h> #include <espeak/speak_lib.h> int test() { espeak_POSITION_TYPE position_type; espeak_AUDIO_OUTPUT output; char *path=NULL; int Buflength = 500, Options=0; void* user_data; t_espeak_callback *SynthCallback; espeak_PARAMETER Parm; char Voice[] = {"English"}; int i=0; char text[1000]; unsigned int Size,position=0, end_position=0, flags=espeakCHARS_AUTO, *unique_identifier; output = AUDIO_OUTPUT_PLAYBACK; espeak_Initialize(output, Buflength, path, Options ); espeak_SetVoiceByName(Voice); const char *langNativeString = "en_US"; espeak_VOICE voice={0}; voice.languages = langNativeString; voice.name = "US"; voice.variant = 2; voice.gender = 1; Size = strlen(text)+1; for (i=0; i<5; i++) { scanf("%s ", &text); printf("%s", text); espeak_Synth( text, Size, position, position_type, end_position, flags, unique_identifier, user_data ); espeak_Synchronize( ); fflush(stdout); } return 0; } int main(int argc, char* argv[] ) { test(); return 0; }
Что я уже пробовал:
Я попробовал некоторые модификации, но ни одна из них не сработала. Я хочу, чтобы программа работала вот так:
> ввод пользователя: привет
>
> эспик говорит: Привет
>
> пользовательский ввод: один
>
> эспик говорит: один
>
> (Для 5
> входы)
Но когда я пытаюсь вставить более 4 символов в качестве входных данных,это дает ошибку " ошибка сегментации`!