c/c++语言开发共享点击进入c后退出循环

如何通过按Enter键退出循环:我尝试了以下代码,但它无法正常工作!

int main() { int n,i,j,no,arr[10]; char c; scanf("%d",&n); for(i=0;i<n;i++) { j=0; while(c!='n') { scanf("%d",&arr[j]); c=getchar(); j++; } scanf("%d",&no); } return 0; } 

我必须输入如下内容:

 3//No of inputs 3 4 5//input 1 6 4 3//input 2 5 8//input 3 9 

    最好的办法是使用fgets进行基于行的输入,并检测行中唯一的内容是换行符。

    如果没有,您可以对您输入的行进行sscanf以获得整数,而不是直接scanf标准输入。

    在这个答案中可以找到一个强大的行输入function,然后您只需要修改您的scanf以使用sscanf

    如果您不想使用该全function输入function,可以使用更简单的方法,例如:

     #include  #include  int main(void) { char inputStr[1024]; int intVal; // Loop forever. for (;;) { // Get a string from the user, break on error. printf ("Enter your string: "); if (fgets (inputStr, sizeof (inputStr), stdin) == NULL) break; // Break if nothing entered. if (strcmp (inputStr, "n") == 0) break; // Get and print integer. if (sscanf (inputStr, "%d", &intVal) != 1) printf ("scanf failuren"); else printf ("You entered %dn", intVal); } return 0; } 

    新换行符( n或10十进制Ascii)和回车符( r或13十进制Ascii)之间存在差异。 在您的代码中,您应该尝试:

      switch(c) { case 10: scanf("%d",&no); /*c=something if you need to enter the loop again after reading no*/ break; case 13: scanf("%d",&no); /*c=something if you need to enter the loop again after reading no*/ break; default: scanf("%d",&arr[j]); c=getchar(); j++; break; } 

    您还应注意,您的变量c未在第一次测试中初始化,如果您不希望任何以“ n”或“ r n”开头的输入,那么在第一次测试之前将某些值归于其中会更好。

    更改

     j=0; 

     j=0;c=' ';//initialize c, clear 'n' 

    当程序退出while循环时, c包含'n'因此下次程序无法进入while循环时。 你应该为'n'以外'n' c赋予一些值,同时在for循环中给j=0

      以上就是c/c++开发分享点击进入c后退出循环相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/549660.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐