【问题标题】:swapping rows of dynamic 2d array in C在C中交换动态二维数组的行
【发布时间】:2018-10-15 17:31:27
【问题描述】:

我想在 C 中交换两行字符串数组。

例如:

第一行 , 第二行

交换后: 第二行第一行

这个函数应该怎么看,swap_rows() func 不起作用。 我应该以某种方式使用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; }

【问题讨论】:

  • 只是一个提示,所以你的作业仍然是一个挑战:你将如何交换任何两个变量的值?
  • @purec: 第一行在偏移量0...
  • 我投票结束这个问题,因为它看起来像一个写我的代码请求。
  • char* tmp = str_tab[0]; str_tab[0] = str_tab[1]; str_tab[1] = tmp;

标签: c arrays dynamic allocation


【解决方案1】:

您可以简单地交换指针。

void swap_rows(char **array, int row1, int row2) {
    char *temp = array[row1];
    array[row1] = array[row2];
    array[row2] = temp;
}

【讨论】:

    猜你喜欢
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多