gpt4 book ai didi

c - 反转打印功能

转载 作者:行者123 更新时间:2023-12-04 12:09:38 24 4
gpt4 key购买 nike

昨天我不得不解决一个考试练习,不幸的是,我失败了。
练习是用 C 语言创建一个具有以下规则的函数:

  • 编写一个函数,该函数接受一个字符串并反向显示该字符串
    顺序后跟换行符。
  • 它的原型(prototype)是这样构造的: char *ft_rev_print (char *str)
  • 它必须返回它的参数
  • 只允许使用函数 'write'(所以没有 printf 或其他)

  • 有了这些信息,我写道:
    int     ft_strlen(char *str) /*to count the length of the original string*/
    {
    int i;
    i = 0;
    while (str[i])
    i++;
    return (i);
    }
    char *ft_rev_print (char *str)
    {
    int i;

    i = ft_strlen(str);
    while (i)
    {
    write (1, (str +1), 1);
    i--;
    }
    return (str); /*returning its argument */
    }

    int main(void) /*IT HAD TO WORK WITH THIS MAIN, DID NOT WROTE THIS MYSELF!*/
    {
    ft_rev_print("rainbow dash");
    write(1, "\n", 1);
    return (0);
    }
    我尝试了很长时间才能让它工作,但失败了..所以现在我正在为此感到头疼。我做错了什么 ?我错过了什么?
    提前致谢 !

    最佳答案

    您的 while 循环是错误的,您从 i=0 开始并在它不为零时进行迭代,因此不会进行任何迭代。
    你应该做的是:

  • 初始化 i 使其成为最后一个字符的索引
  • 循环只要它是一个有效的索引
  • 打印第 i 个字符,并不总是第二个(在索引 1 处)
  • char *ft_rev_print (char *str)
    {
    int i;

    i = ft_strlen(str) - 1; // <-- Initialize i to be the index of the last character
    while (i >= 0) // <-- Loop as long as it's valid
    {
    write (1, (str+i), 1); // <-- Print the i-th character
    i--;
    }
    return (str);
    }

    关于c - 反转打印功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66829373/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com