反转用户输入的整数字符串(C)

tek*_*agi 1 c string reverse

我想做的是反转用户输入的数字字符串。发生的事情是它会编译并运行,直到我在输入文件后按Enter 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;
}
Run Code Online (Sandbox Code Playgroud)

编辑:刷新换行符的stdin:/并在此仅使用该程序进行映像。与我的。

Wie*_*err 5

您正在尝试访问未在以下位置分配的内存:

 sprintf(charIt, "%d", giveStr);
Run Code Online (Sandbox Code Playgroud)

更改 char* charIt;char charIt[50];,一切都应该正常(至少,分段错误部分)

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

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

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