Строка символов. Поменять местами первое и последнее слово в строке - C (СИ)
Формулировка задачи:
Есть задание: Дана строка символов. Поменять местами первое и последнее слово в строке.
На сколько я понимаю, то должен быть массив символов. И менять слова как только дойдет до пробела. а вот как это все записать я не знаю
Решение задачи: «Строка символов. Поменять местами первое и последнее слово в строке»
textual
Листинг программы
#include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<string.h> int main() { char* psz=(char*)malloc(256); printf("Enter a string: "); gets(psz); int i = 0; char str1[256]; while (!isspace(*psz) && *psz != '\0') str1[i++] = *psz++; str1[i] = '\0'; int n = strlen(psz)-1; int k = 0; char str2[256]; char* temp = psz; temp+=strlen(psz)-1; while (!isspace(*temp) && *temp != '\0') *temp--; while (*temp != '\0') str2[k++] = *temp++; while (!isspace(psz[n]) && n >= 0) n--; str2[k] = '\0'; psz[n] = '\0'; sprintf(str2,"%s%s %s",str2,psz,str1); printf("%s\n",str2); free(psz); getchar(); return 0; }
Объяснение кода листинга программы
В этом коде:
- Сначала выделяется память под строку символов, вводимых пользователем.
- Затем пользователю предлагается ввести строку.
- Далее, используя функцию gets, введенная строка сохраняется в переменной типа char*, выделенной ранее.
- Следующий этап — выделение первых (без пробелов) символов строки во временный массив str1.
- Затем выделяется память под массив символов, которые будут на месте первых символов строки.
- В цикле, пока не встретится пробел или конец строки, в массив str2 записываются символы из конца строки.
- Затем, используя функцию sprintf, в массив str2 вставляется строка, образованная из первых символов строки, пробела и оставшихся символов строки.
- Наконец, выводится полученная строка, и память освобождается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д