微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 putchar 函数打印出数组时出现问题获得一拳符号作为输出

如何解决使用 putchar 函数打印出数组时出现问题获得一拳符号作为输出

#include <stdio.h>

void print_rev(char *s);

int main(void)
{
    char *str;
    str = "I do not fear computers. I fear the lack of them - Isaac Asimov";
    print_rev(str);
    return (0);
}

// read array and print it out backwards char by char.
void print_rev(char *s)
{
    int arrLength;

    arrLength = 0;

    // capture length of array
    while (*s != '\0') {
        arrLength++;
        s++;
    }

    arrLength--;

    // print array backwards
    for (; arrLength >= 0; arrLength--) {
        putchar(s[arrLength]);
    }

    putchar('\n');
}

这是我的代码。当我运行它时,我所能做的就是让它打印出这个输出picture of output

我尝试研究为什么会发生这种情况,但我找不到人们使用 putchar 而不是 printf 的任何视频。非常感谢帮助。

我的代码的重点是获取字符串并使用 putchar 反转它。 我无法使用函数 strlen()

预期输出

vomisA caasI - meht fo kcal eht raef I .sretupmoc raef ton od I

解决方法

print_rev() 中,在您重新发明 strlen() 轮的第一遍期间,您还增加了 s 以指向终止的 NUL 字符。

在最后一个循环中,您正在重用 s,就好像它没有改变一样:s[arrLength] 显然指向字符串的外部,因为 s 指向它的末尾。>

解决方案:改变

for (; arrLength >= 0; arrLength--) {
    putchar(s[arrLength]);
}

for (; arrLength >= 0; arrLength--) {
    s--;
    putchar(*s);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。