|
问题如下:
我现在我的系统中实现这样一个人性化的功能,修改一个链表结点时,由于被修改的链表结点原来本有值,现在在修改时,可能只修改链表结点数据中的某项值,而非某所有的值.为了方便输入,我想让按<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脚本. |
|