| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6616 人关注过本帖
标题:_getch()(VS写getch()会报错)
只看楼主 加入收藏
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
结帖率:100%
收藏
 问题点数:0 回复次数:8 
_getch()(VS写getch()会报错)
用visual studio 2017写了关于_getch()的程序。用循环输入时每读一个字符后面都会加上尾零('\0'),怎样做才能在循环输入时自动加尾零,用Dev写getch()循环读入字符时不会有尾零。
程序代码:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

int main(void)
{
    char ch[10];
    for (int i = 0; i < 10; i++) {
        ch[i] = _getch();
        printf("%c", ch[i]);
    }
    system("pause");
    return 0;
}

图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: getch VS 报错 循环 include 
2018-10-26 09:57
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
收藏
得分:0 
下面是Dev的代码和运行结果。
程序代码:
#include<stdio.h>
#include<conio.h>
int main(void)
{
    char ch[10];
    for(int i=0;i<10;i++){
        ch[i]=getch();
        printf("%c",ch[i]);
    }
    return 0;
}


图片附件: 游客没有浏览图片的权限,请 登录注册

C果然是有点难啊!
2018-10-26 10:05
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
收藏
得分:0 
下面是Dev的代码和运行结果。
程序代码:
#include<stdio.h>
#include<conio.h>
int main(void)
{
    char ch[10];
    for(int i=0;i<10;i++){
        ch[i]=getch();
        printf("%c",ch[i]);
    }
    return 0;
}


图片附件: 游客没有浏览图片的权限,请 登录注册

C果然是有点难啊!
2018-10-26 10:05
星泪成寒
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:76
专家分:539
注 册:2013-5-19
收藏
得分:0 
VS在Unicode环境(默认)下 _getch() 一个按键返回2次,
如果第一次的值是0xE0, 那么第二次返回的是控制按键值(箭头F系功能键等),
如果第一次的值不是0xE0,那么这个就是普通按键的值,第二次的值必为0.
2018-11-05 09:24
Mr_doge
Rank: 5Rank: 5
等 级:贵宾
威 望:10
帖 子:159
专家分:385
注 册:2018-6-28
收藏
得分:0 
根据描述
VS的_getchar()
ch[i]={'h','\0','e','\0','l','\0','l','\0','o','\0'};
gcc的getchar()
ch[i]={'h','e','l','l','o'};
如果希望后者实现前者的效果,那么可以在后者的循环每一步骤增加一个循环round++并写入'\0'的操作就可以实现一样的效果(方向键可以用if作出对应分支)

仔细看了看我好像在挖坟?算了既然在前两页就不算挖坟,没错这是在修葺不叫刨坟
2018-11-08 04:19
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
收藏
得分:0 
回复 4楼 星泪成寒
谢谢指点。

C果然是有点难啊!
2018-11-15 12:48
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
收藏
得分:0 
回复 5楼 Mr_doge
多谢,但是不想用vs了,很多语法跟c标准不一样。

C果然是有点难啊!
2018-11-15 12:50
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
以下是引用MeandC在2018-11-15 12:50:32的发言:

多谢,但是不想用vs了,很多语法跟c标准不一样。

这个你冤枉vs了
getch 这个函数根本不是标准函数
这个函数的行为是根据编译器手册描述
谈不上和C标准不一样
C标准根本没描述这个函数

https://zh.
2018-11-15 14:48
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
收藏
得分:0 
回复 8楼 lin5161678
还是有出入的,比如文件的操作,打开文件的函数的参数就不一样,C程序虽然大体上是一样的,但是有一些就是不一样,也不是说vs不好,vs功能很强大,只是我不想用了。

C果然是有点难啊!
2018-11-15 17:02
快速回复:_getch()(VS写getch()会报错)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019274 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved