鱼C论坛

 找回密码
 立即注册
查看: 3270|回复: 6

C语言在控制台自动循环输出的问题

[复制链接]
发表于 2019-9-16 02:25:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
控制台自动循环数组(在我什么都不按的情况下),按A或B输出一句话然后继续循环列表,只有在我按s会停止程序。

试了几次都不行,要么是程序会停下等我输入,要么报错
用什么方法可以既不停止程序,又能获取我输入的字符呢??


  1. #include <stdio.h>
  2. #include <conio.h>

  3. int main(){
  4.     char ch;

  5.     int tab[5];
  6.     tab[0] = 1;
  7.     tab[1] = 2;
  8.     tab[2] = 3;
  9.     tab[3] = 4;
  10.     tab[4] = 5;
  11.     int again = 1;
  12.     int i = 0;
  13.     while (again){
  14.             if(i==5){
  15.                     i=0;
  16.                 }
  17.             sleep(1);
  18.             printf("%d\n",tab[i]);
  19.             ch = getch();
  20.            
  21.             switch (ch){
  22.                         case "a":
  23.                                 printf("按了 A");
  24.                                 break;
  25.                         case "b":
  26.                                 printf("按了 B");
  27.                                 break;
  28.                         case "s":
  29.                                 again = 0;
  30.                                 break;
  31.                 }
  32.             i++;
  33.         }

  34.     return 0;

  35. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-9-16 04:25:25 From FishC Mobile | 显示全部楼层
ch应该是字符或者整形
你用双引号表示的是字符串,
好好了解一下单字符和单元素字符串的区别
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-16 04:27:10 From FishC Mobile | 显示全部楼层
'a'是字符型;
"a"是字符串;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-16 10:25:38 | 显示全部楼层
本帖最后由 superbe 于 2019-9-16 16:58 编辑
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <windows.h>
  4. #include <process.h>

  5. void getInput(PVOID pvoid)
  6. {
  7.         char ch;
  8.         while(1)
  9.         {
  10.                 ch=getch();
  11.                 *(char *)pvoid=ch;
  12.                 if(ch=='s') _endthread();
  13.         }
  14. }

  15. int main()
  16. {
  17.         char ch=0;
  18.         int i = 0;
  19.         int again=1;
  20.         int tab[5]={1,2,3,4,5};

  21.         _beginthread(getInput,0,&ch);
  22.         while (again){
  23.                 printf("%d\n",tab[i++]);
  24.                 switch(ch)
  25.                 {
  26.                 case 'a':
  27.                         printf("按下了 A\n");
  28.                         break;
  29.                 case 'b':
  30.                         printf("按下了 B\n");
  31.                         break;
  32.                 case 's':
  33.                         again=0;
  34.                          break;
  35.                 }
  36.                 ch=0;
  37.                 if(i==5) i=0;
  38.                 Sleep(500);
  39.         }
  40.         return 0;
  41. }
复制代码

vs2012和dev-c++下测试通过。vc6要设置下才能编译。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-16 17:00:36 | 显示全部楼层
本帖最后由 superbe 于 2019-9-16 17:02 编辑

代码刚修改了下,原来有点问题。上面贴子已经修改过了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-16 17:32:09 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-9-16 20:11:30 From FishC Mobile | 显示全部楼层
bin554385863 发表于 2019-9-16 04:25
ch应该是字符或者整形
你用双引号表示的是字符串,
好好了解一下单字符和单元素字符串的区别

这个我改了 程序每次循环到get这就停止等待我输入字符了 ,有什么办法可以让他自动循环列表里的值,只有我输入字符他才会对应反应呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-1 11:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表