1

该功能将由菜单调用。

void exponentiation()
{

  int i, result = 0, first, second;

  printf("\n%s\n%s\n\n%s",
         "1) Exponentiation",
         "------------------",
         "Enter 1st integer: ");
  scanf("%d", &first);

  printf("Enter 2nd integer: ");
  scanf("%d", &second);

  printf("%d raised to %d equals %d\n", first, second, result);
  main();
}

从这个函数我需要读取用户输入,如果用户输入是“输入”而没有任何整数,它应该返回到调用 main() 的菜单。

我已经尝试获取输入。例如:

if(first == '\n')

{main();}

或者

if(first == 10) /**which is 10 is ASCII code for enter**/

{main()}

两种方式都不起作用,有什么建议吗?

4

1 回答 1

4

两种方式都不起作用,任何建议

该函数scanf返回它成功扫描的项目数。你应该检查它的回报,如果它不符合你的期望,就回去。


你也应该知道%d忽略空格。因此,如果用户在没有输入整数的情况下点击返回,scanf只需跳过它并等待其他内容。

如果您坚持不以这种方式忽略空格,则应避免scanf并使用其他输入法,例如fgets. 逐行获取用户的输入并使用sscanf,strtoulstrtok理解它。

于 2013-03-17T13:34:02.867 回答