Строка символов. Поменять местами первое и последнее слово в строке - 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 вставляется строка, образованная из первых символов строки, пробела и оставшихся символов строки.
- Наконец, выводится полученная строка, и память освобождается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д