首页 > 解决方案 > 程序打印错误输出

问题描述

为什么下面的代码打印!notreblo!而不是!notrebloH?从哪里来!?我正在尝试编写一个反转数组的程序,并且我正在使用该main函数来测试该rev_string函数。

#include <stdio.h>

int main(void)
{ 
   char s[11] = "Holberton!";

   printf("%s\n", s);
   rev_string(s);
   printf("%s\n", s);
   return (0);
}

void rev_string(char *s)
{
    char new[500];
    int count, newcount;

    count = 0, newcount = 0;

    while (*(s + count) != '\0')
    {
            *(new + count) = *(s + count);
            count++;
    }

    count--;

    while (count > 0)
    {
            *(s + newcount) = *(new + count);
            count--;
            newcount++;
    }
}

标签: c

解决方案


第二个while不复制第一个字符,因为复制的最后一个字符在索引 1 处。条件告诉它:count > 0.

将其更改为count >= 0.

(为著名的“一次性”错误+1。如果我每次得到 1 美分,我就会成为一个有钱人。)


推荐阅读