【问题标题】:Reversing chars in C在C中反转字符
【发布时间】:2018-05-13 17:40:39
【问题描述】:

我正在查看一个反转 chars 数组的函数,我得到了所有内容,但让我感到困惑的是最后一个 for 循环中的最后一条语句,即 line[j] = temp;。我不知道这是为了什么。

    void reverse(char line[]) {

    char temp;
    int i, j;

    for (j = 0; line[j] != '\0'; ++j)
        ;
    --j;

    if (line[j] == '\n') {
        --j;
    }

    for (i = 0; i < j; ++i, --j) {
        temp = line[i];

        line[i] = line[j];

        //This statement is the one in which I dont understand it's function
        line[j] = temp;
    }
}

【问题讨论】:

  • 最后一行将 line[i] 中的内容(现在在 temp 中)分配回 line[j] 处的新位置。这 3 行交换 line[i] 和 line[j]。
  • 你认为这个是做什么的:'temp = line[i];' ?

标签: c arrays for-loop


【解决方案1】:

您只是想一起交换数组中的两个变量。你不能只做line[i] = line[j];,因为'line'数组的第i个项目将被第j个变量覆盖,它的初始值将丢失。因此,为了避免第 i 个项目丢失,您首先将其复制到 'temp' (temp= line[i]) 中,然后将 line[i] 覆盖为 line[j],然后复制 temp(这是您的初始值 @ 987654325@)转至line[j]

【讨论】:

    【解决方案2】:

    最后一个fori 向上运行,从j 向下运行,直到它们在中间相遇,并切换数组中的这些元素。 在循环的每次迭代中,将ith 项保存到temp,将jth 项放在ith 位置,然后将之前保存的值temp 分配给jth 地方。

    【讨论】:

      猜你喜欢
      • 2010-10-21
      • 2015-05-24
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      相关资源
      最近更新 更多