c - c中如何反转字符串

标签 c reverse

<分区>

我遇到了这个问题,我无法让它工作

#include <stdio.h>
#include <string.h>

void RecursiveReverse(char word)
{
    if (word == '\0')
        return;

    RecursiveReverse(word + sizeof(word));

    printf("%c", word);
}

int main(void)
{
    printf("enter a word please =>"); 
    char toBeRev;
    scanf("%s", toBeRev); 

    RecursiveReverse(toBeRev);

    printf("\n");
}

我应该请求一个词,并将它发送到一个函数以将其反转。

最佳答案

第一个错误你做了这样的事情:

char toBeRev; 
scanf("%s", toBeRev); 

因此您尝试用用户输入填充 toBeRev,但 %s 使用的是 char* 而不是 char

所以你必须有一个可以包含用户输入的缓冲区。

char input[4096] = {0};

然后你说你只需要以相反的顺序打印字符串,所以你不需要改变你的字符串的值,你从递归函数开始(这是个好主意)

我按照你的例子做了一些事情

  void reverse(const char *str) //you don't need to modify your string
   { 
      if (*str != '\0') //if the first character is not '\O' 
        reverse((str + 1)); // call again the function but with +1 in the pointer addr
      printf("%c", *str); // then print the character
    }

int main()
{
  char input[4096] = {0};

  printf("Enter a word please => ");
  scanf("%s", input);
  reverse(input);
  printf("\n");
  return (0);
}

所以如果输入是'Hi',在输入中你将有['H']['I']['\0']

第一个反转字符串的调用是 ['H']['I']['\0'] 第二次调用字符串将是 ['I']['\0'] 第三次通话 ['\0'] 然后打印字符串的第一个字符 IH

关于c - c中如何反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17630743/

相关文章:

c++ - 过度依赖宏

c - 在链表中使用递归

c - 在 C 中反向打印字符串

php - 如何使用反向代理脚本从 SSL 链接到外部图像

C - 为什么这个函数不反转数组?

jQuery 如何反转remove() 事件

c - 如何在 php 扩展开发中调用 `callable` zval?

c - 将函数内部的区域分配给空指针并保留外部的值

C assert() 表达式

java - 逆向工程随机数生成器