鱼C论坛

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

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

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

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

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

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

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

int main(){
    char ch;
 
    int tab[5];
    tab[0] = 1;
    tab[1] = 2;
    tab[2] = 3;
    tab[3] = 4;
    tab[4] = 5;
    int again = 1;
    int i = 0;
    while (again){
            if(i==5){
                    i=0;
                }
            sleep(1);
            printf("%d\n",tab[i]);
            ch = getch();
            
            switch (ch){
                         case "a":
                                 printf("按了 A");
                                 break;
                         case "b":
                                 printf("按了 B");
                                 break;
                         case "s":
                                 again = 0;
                                 break;
                }
            i++;
        }
 
    return 0;
 
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-16 04:25:25 From FishC Mobile | 显示全部楼层
ch应该是字符或者整形
你用双引号表示的是字符串,
好好了解一下单字符和单元素字符串的区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-16 04:27:10 From FishC Mobile | 显示全部楼层
'a'是字符型;
"a"是字符串;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

void getInput(PVOID pvoid)
{
        char ch;
        while(1) 
        {
                ch=getch();
                *(char *)pvoid=ch;
                if(ch=='s') _endthread();
        }
}

int main()
{
        char ch=0;
        int i = 0;
        int again=1;
        int tab[5]={1,2,3,4,5};

        _beginthread(getInput,0,&ch);
        while (again){
                printf("%d\n",tab[i++]);
                switch(ch)
                {
                case 'a':
                        printf("按下了 A\n");
                        break;
                case 'b':
                        printf("按下了 B\n");
                        break;
                case 's':
                        again=0;
                         break;
                }
                ch=0;
                if(i==5) i=0;
                Sleep(500);
        }
        return 0;
}
vs2012和dev-c++下测试通过。vc6要设置下才能编译。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

代码刚修改了下,原来有点问题。上面贴子已经修改过了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-16 17:32:09 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

这个我改了 程序每次循环到get这就停止等待我输入字符了 ,有什么办法可以让他自动循环列表里的值,只有我输入字符他才会对应反应呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 01:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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