我想在C中交换两行字符串数组。
例如:
第一排
,第二行
交换后:
第二排,第一排
该函数应如何显示,swap_rows()函数不起作用。
我应该以某种方式使用strcpy()
函数吗?
我做了什么:
#define N 100
静态字符** str_tab;void tab_alloc(const int M){ str_tab = (char **)malloc((M * sizeof(char *))); for (int i = 0; i < M; i++) str_tab[i] = (char *)malloc(N * sizeof(char));}void tab_fill(){ size_t M = _msize(str_tab) / sizeof(char *); for (int i = 0; i < M; i++) gets_s(str_tab[i], N);}void swap_rows(){ int row1, row2; puts("Which rows u want swap?"); puts("put 1:"); scanf_s("%d", &row1); puts("put 2:"); scanf_s("%d", &row2); char *temp = str_tab[row1]; strcpy(str_tab[row1], str_tab[row2]); // str_tab[row1] = str_tab[row2]; strcpy(str_tab[row2], temp); // str_tab[row2] = temp;}
最佳答案
您可以简单地交换指针。
void swap_rows(char **array, int row1, int row2) { char *temp = array[row1]; array[row1] = array[row2]; array[row2] = temp; }
关于c - 在C中交换动态2D数组的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50188290/