louisz90 发表于 2019-9-16 02:25:14

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

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

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


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

int main(){
    char ch;

    int tab;
    tab = 1;
    tab = 2;
    tab = 3;
    tab = 4;
    tab = 5;
    int again = 1;
    int i = 0;
    while (again){
            if(i==5){
                    i=0;
                }
            sleep(1);
            printf("%d\n",tab);
            ch = getch();
           
            switch (ch){
                        case "a":
                                printf("按了 A");
                                break;
                        case "b":
                                printf("按了 B");
                                break;
                        case "s":
                                again = 0;
                                break;
                }
            i++;
        }

    return 0;

}

bin554385863 发表于 2019-9-16 04:25:25

ch应该是字符或者整形
你用双引号表示的是字符串,
好好了解一下单字符和单元素字符串的区别

bin554385863 发表于 2019-9-16 04:27:10

'a'是字符型;
"a"是字符串;

superbe 发表于 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={1,2,3,4,5};

        _beginthread(getInput,0,&ch);
        while (again){
                printf("%d\n",tab);
                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要设置下才能编译。

superbe 发表于 2019-9-16 17:00:36

本帖最后由 superbe 于 2019-9-16 17:02 编辑

代码刚修改了下,原来有点问题。上面贴子已经修改过了

雷蛇 发表于 2019-9-16 17:32:09

{:10_269:}

louisz90 发表于 2019-9-16 20:11:30

bin554385863 发表于 2019-9-16 04:25
ch应该是字符或者整形
你用双引号表示的是字符串,
好好了解一下单字符和单元素字符串的区别

这个我改了 程序每次循环到get这就停止等待我输入字符了 ,有什么办法可以让他自动循环列表里的值,只有我输入字符他才会对应反应呢
页: [1]
查看完整版本: C语言在控制台自动循环输出的问题