c - 反转用户输入的一串整数 (C)

标签 c string reverse

我想做的是反转用户输入的一串数字。它会编译并运行,直到我在 scanf 之后按回车键。然后我收到一些 Microsoft 运行时错误...出了什么问题???

注意:这是作业,但我已经弄清楚了逻辑。令我困惑的是这个错误。

#include <stdio.h>
int main()
{
    unsigned int giveStr = 0;
    char* charIt;
    printf("Enter a number to be reversed.\t");
    scanf("%d", &giveStr);
    fflush(stdin);
    sprintf(charIt, "%d", giveStr);
    revStr(giveStr);
    getchar();
    return 0;
}

revStr(unsigned int n)
{
      char buffer[100];
      int uselessvar, counter = 0;
      for (; n > 0;)
      {
           uselessvar = sprintf(&buffer[counter], "%d", n);
           counter++;
      }
      for (counter = 0; counter > 0;)
      {
          printf("%c", buffer[counter]);
          counter--;
      }
      return 0;
}

编辑:刷新换行符的标准输入:/还有图像here只是没有那个程序。和我的。

最佳答案

您正在尝试访问未分配的内存:

 sprintf(charIt, "%d", giveStr);

char* charIt; 更改为 char charIt[50]; 一切都应该很好(好吧,至少是段错误部分)

另外...将 charIt 传递给 revStr,因为 charIt 包含带有我们数字的字符串。 然后,revStr 中的一个简单的 for 循环就可以解决问题(第二个循环的目的是什么?)

void revStr(char *giveStr)
{
  int counter;
  for (counter = strlen(giveStr)-1; counter >= 0; counter--)
  {
    printf("%c", giveStr[counter]);
  }
  printf("\n");
}

这将打印我们的字符表示从最后一个到第一个的每个字符。您应该阅读有关 for 循环的更多信息。

关于c - 反转用户输入的一串整数 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911236/

相关文章:

linux - 如何删除下划线之前和包括下划线的字符?

c - 将 0110 打印为回文

c++ - 使用递归反转链表

c - 如何获得 gtklistboxrow 的 child ?

C - 在一行中更改结构数组的所有值

c - 编辑从 lex 和 bison 文件生成的 C 文件

c - 字符数组的 sizeof

python - 比 Python 的 find 更强大的方法?正则表达式问题?

php - 从 mysql 加载字符串作为 xml

image - 如果模糊算法已知,图像上的模糊可以逆转吗?