Мое назначение - написать функцию, которая принимает входную строку от пользователя, разбивает ее на несколько строк, каждая из которых содержит отдельное слово из входного предложения, а затем переворачивает предложение.Результатом будет ввод предложений, но со словами в обратном порядке.
Пока у меня просто есть функция, принимающая ввод, разбивая его на отдельные слова, сохраняя эти слова в массив и печатаяКаждое отдельное слово в порядке.У меня нет процесса для изменения порядка написанных слов.
Вот код функции, с которой я до сих пор справлялся:
void reverse(void){
printf("\n\n%s\n", "Reverse words in String: ");
char input[200];
printf("\n%s", "Enter string\n> ");
scanf("%s", &input);
char reverseSentence[200];
char sentenceParts[20][200];
int wordCount = 0;
char *thisWord = strtok(input, " ");
strcpy(sentenceParts[wordCount], thisWord);
wordCount++;
while(thisWord != NULL){
thisWord = strtok(NULL, " ");
strcpy(sentenceParts[wordCount], thisWord);
wordCount++;
}
printf("\n\n");
for(int i = 0; i < wordCount + 1; ++i){
printf("%s%s", sentenceParts[i], " ");
}
}
Проблема заключается воператор while:
while(thisWord != NULL){
thisWord = strtok(NULL, " ");
strcpy(sentenceParts[wordCount], thisWord);
wordCount++;
}
Программа завершается с ошибкой сегментации в операторе strcpy.Я не могу понять на всю жизнь, почему он это делает.Кажется, что он отлично работал вне цикла while.
Есть мысли?Я застрял на этом довольно долго и не могу найти слишком много других ресурсов, чтобы помочь.