Поменять местами первое и второе слово в строке Си
Помогите дописать код, я в тупике. Необходимо в n строках поменять первое и второе слово местами (n <= 20), (длина строки <=128), слова могут быть разделены произвольным количеством пробелов . У меня есть функции ввода и вывода строк. Процесс смены происходит в функции process.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLENGTH 128
#define MAXSIZE 20
void input(char **str, int n){
for(int i = 0; i < n; i++){
fgets(str[i], 129, stdin);
}
}
void process(char **str, int n){
int j;
int k = 0;
int l[4];
char buffer_num[MAXLENGTH];
char buffer_num2[MAXLENGTH];
for(int i = 0; i < n; i++){
memset(buffer_num,0,sizeof(buffer_num));//Пустая строка
memset(buffer_num2,0,sizeof(buffer_num2));//Пустая строка
j = 0;
while(str[i][j] == ' ')
j++;
l[0] = j;//Начало первого слова
k = 0;
while(str[i][j] != ' '){
buffer_num[k] = str[i][j];
j++;
k++;
}
l[1] = j;//Конец первого слова
while(str[i][j] == ' ')
j++;
l[2] = j;//Начало второго слова
k = 0;
while(str[i][j] != ' '){
buffer_num2[k] = str[i][j];
j++;
k++;
}
l[3] = j;//Конец второго слова
printf("%d %d %d %d\n", l[0], l[1], l[2], l[3]);
printf("%s %s\n",buffer_num,buffer_num2); //buffer_num - 1 слово,buffer_num2 - 2 слово
////////////////
//Код меняющий в str[i] первое и второе слово местами
////////////////
}
}
void output(char **str, int n){
int i;
for (i =0; i < n ; i++){
printf("%s", str[i]);
}
}
int main(){
int n;
printf("Input number of lines: ");
scanf("%d\n", &n);
char **words = NULL;
words = (char**)malloc( MAXSIZE * sizeof(char*));
for (int i = 0; i < n; i++){
words[i] = (char*)malloc((MAXLENGTH) * sizeof(char));
}
input(words, n);
printf("Processed text: \n");
process(words, n);
output(words, n);
return 0;
}