Это функция, которую я написал до сих пор. Эта функция вызывается многократно после извлечения каждой строки в функции main() с помощью функции fgets(). Входы в функцию - это строка, считанная из fgets(), и два номера столбцов, которые необходимо поменять местами. Внизу Код Матрица - это тип char ***, объявленный глобально.
char ** switch_column(const char * str, int col1, int col2)
{
int count =0, str_length =0;
const char delimiters[] = " \t";
char *token;
char * tmp = strdup(str);
int nLineChar_count =0;
int mat_indx;
char *place_holder;
tok_count =0;
Matrix[curr_line -1] = (char **)malloc(MAX_LINE_LENGTH*sizeof(char*));
str_length = strlen(str);
printf("%d\n",str_length);
token = strtok(tmp,delimiters); // Get first Token from the str
Matrix[curr_line -1][0] = token;
mat_indx =1;
tok_count++;
while(token || token != NULL)
{
token = strtok(NULL,delimiters); // Get all other tokens following the first in str
Matrix[curr_line -1][mat_indx++] = token;
printf("%s\n",token);
tok_count++;
}
if(Matrix[curr_line -1][col1-1] != NULL && Matrix[curr_line -1][col2-1] != NULL)
{
place_holder = Matrix[curr_line -1][col1-1];
Matrix[curr_line -1][col1-1] = Matrix[curr_line -1][col2-1];
Matrix[curr_line -1][col2-1] = place_holder;
}
return Matrix[curr_line -1];
}
И что вы сделали до сих пор? –
Вы можете добиться этого с помощью ввода-вывода файлов в сочетании с strtok и некоторой условной логикой. – RPGillespie
Почему вы хотите сделать это с помощью C? –