求一个字符输入的c语言函数. [已解决]

C、C++和Java语言
头像
qlhn
帖子: 736
注册时间: 2006-08-25 10:37
送出感谢: 0
接收感谢: 0
联系:

求一个字符输入的c语言函数. [已解决]

#1

帖子 qlhn » 2008-02-03 13:53

想学编程,从c入手.

getchar()是用作字符输入的.但它有一个不便之处,就是输入单个字符之后须打回车.

有没有那样一个函数, 输入单个字符无须打回车的?
上次由 qlhn 在 2008-02-12 13:45,总共编辑 1 次。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

#2

帖子 eexpress » 2008-02-03 15:17

man getch
● 鸣学
头像
qlhn
帖子: 736
注册时间: 2006-08-25 10:37
送出感谢: 0
接收感谢: 0
联系:

#3

帖子 qlhn » 2008-02-04 12:13

man getch 回答 no entry.

用getch() 替换 getchar(), 编译器报告
/tmp/ccI6B3we.o: In function `main':more6.c:(.text+0x1d):对‘getch’未定义的引用
collect2: ld 返回 1


难道是缺少头文件? 需要什么样的头文件?
头像
fortruth
帖子: 1795
注册时间: 2005-11-06 1:51
来自: 七彩云世界
送出感谢: 0
接收感谢: 0
联系:

#4

帖子 fortruth » 2008-02-04 12:39

char c;
scanf("%c", &c);

这样可以么?
佛出寺,求索真世界 For_Truth:Free_Open_Share
OPEN GPG KEY:03D18D95
头像
qlhn
帖子: 736
注册时间: 2006-08-25 10:37
送出感谢: 0
接收感谢: 0
联系:

#5

帖子 qlhn » 2008-02-04 12:57

还是不行, 需要打回车的.

源程序如下:

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

int main(int ac,char *av[])
{
char c;

//c=getch();
scanf("c%",&c);
if (c==' ') printf("this is a space charactor\n");
if (c=='q') printf("it is q\n");
return (0);
}

只是想测试一下有没有不用打回车的字符输入函数

象命令 more 或者 man 那样的.
头像
qlhn
帖子: 736
注册时间: 2006-08-25 10:37
送出感谢: 0
接收感谢: 0
联系:

#6

帖子 qlhn » 2008-02-04 13:00

再问一句, 要想显示
man getch 需要安什么包?
头像
cnchyan
帖子: 106
注册时间: 2005-06-19 23:33
送出感谢: 0
接收感谢: 0
联系:

#7

帖子 cnchyan » 2008-02-04 13:13

curses.h
Ubuntu Karmic
acer 5595 : core2 duo T7200;2*1024M DDR2-667 ;intel 965pm;ati mobility readon X1600

贫贱不能移,富贵不能淫,威武不能屈
头像
titainium
帖子: 689
注册时间: 2006-12-02 12:25
送出感谢: 0
接收感谢: 0

#8

帖子 titainium » 2008-02-05 12:48

看一看关于tty的源码,或者参考这本书《Unix/Linux编程实践教程》,里面有说明。
Titainium
头像
qlhn
帖子: 736
注册时间: 2006-08-25 10:37
送出感谢: 0
接收感谢: 0
联系:

#9

帖子 qlhn » 2008-02-05 13:21

gcc 说找不到 curses.h


我现在看的就是这本《Unix/Linux编程实践教程》, 好吧, 我会去翻翻看的.
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

#10

帖子 eexpress » 2008-02-05 13:36

getch()的作用是从键盘接收一个字符,而且并不把这个字符显示出来,就是说,你按了一个键后它并不在屏幕上显示你按的什么,而继续运行后面的代码,所以我们在C++中可以用它来实现“按任意键继续”的效果,即程序中遇到getch();这行语句,它就会把程序暂停下来,等你按任意键,它接收了这个字符键后再继续执行后面的代码。

lz 都不google的。随便找都找得到的哦。

安装manpages-dev
就可以man getch了。
● 鸣学
头像
qlhn
帖子: 736
注册时间: 2006-08-25 10:37
送出感谢: 0
接收感谢: 0
联系:

#11

帖子 qlhn » 2008-02-05 15:02

在新立得里面查了,已经装了manpages-dev,
并且还把 glibc-doc 也装上了,
但遗憾得很 man getch 还报告 no entry.

我在书里面也查得 getche() 能够显示输入的字符, 只是在man 里面同样不行.

看来只能烦劳哪位替我查查这两个函数需要什么头文件?
头像
qlhn
帖子: 736
注册时间: 2006-08-25 10:37
送出感谢: 0
接收感谢: 0
联系:

#12

帖子 qlhn » 2008-02-05 15:10

傻了. 怎么没想到google ?真是钻了牛角尖了.

赶快去看下.
头像
qlhn
帖子: 736
注册时间: 2006-08-25 10:37
送出感谢: 0
接收感谢: 0
联系:

#13

帖子 qlhn » 2008-02-06 13:02

网上说还是 curses.h 头文件。

既然 gcc 说找不到,看来还是有什么包没安。
头像
titainium
帖子: 689
注册时间: 2006-12-02 12:25
送出感谢: 0
接收感谢: 0

#14

帖子 titainium » 2008-02-06 13:15

找找看有没有这个头文件
Titainium
头像
qlhn
帖子: 736
注册时间: 2006-08-25 10:37
送出感谢: 0
接收感谢: 0
联系:

#15

帖子 qlhn » 2008-02-06 14:14

过节在奶奶家呆着。等过两天回自己家再说吧。
回复

回到 “C/C++/Java”