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