LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 863|回复: 2

请问如何用C实现输入时回车赋原始值!

[复制链接]
发表于 2007-4-11 22:44:15 | 显示全部楼层 |阅读模式
问题如下:
我现在我的系统中实现这样一个人性化的功能,修改一个链表结点时,由于被修改的链表结点原来本有值,现在在修改时,可能只修改链表结点数据中的某项值,而非某所有的值.为了方便输入,我想让按<Enter>键时不修改当前值,而使用原始值.如果有输入非<Enter>键,那么就修改链表结点某项的值.
考虑到C中输入函数,scanf(),getchar(),gets()中,我想只有getchar()才可以完成我的要求,因为字符占用一字符,而用它来接收多个字符后,根据C语言中变量的存储方式,把字符变成我想到的结点.可是目前有点问题,我也不知道C是如何来组织变量存储的,它的高位和低位是如何组织的呢?
我的示例程序如下:
我以我的i386平台为例:
char = 1字节
int = 4字节
[/code]
int get_int(int defval)
{
     char *pval;
     char input = ' ';
           //这个赋值后,由于pval等于一字节,而defval等于四字节,这样就构成了一个指向字符数据了.
          //是不是转换的构牵强的.
     pval = (char*)&defval;
     while ((input = getchar()) = '\n') {
/*
//           其实这样是不行的,因为while时,已经循环多次了,这等于是在重复执行多次for赋值.
           int i;
           for (i = 0; i < 4; i++)
                 pval = (char)input;
/*
     }

     return (defval);

}
[/code]

我基本上就是这样来实现它的,但是做法太笨了,而且根本不太可行.如果输入的值非整形而是字符了呢?又要多加判断,...
请各位支招,怎样才可以实现输入<Enter>键时使用原来默认值,输入新值则进行修改默认值.
或者是诸位有没有用过类似的程序实现呢?我在脚本adduser中找到灵感的,它就可以在输入用户信息时,按<Enter>键使用默认值,不过它使用的是bash脚本.
发表于 2007-4-12 12:44:26 | 显示全部楼层
我向你推荐tvision库 http://tvision.sourceforge.net/
当然你也可以使用ncurses库
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-13 08:32:53 | 显示全部楼层
Post by x11
我向你推荐tvision库 http://tvision.sourceforge.net/
当然你也可以使用ncurses库


谢谢推荐,我使用看看.
回复 支持 反对

使用道具 举报

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

本版积分规则

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