LinuxSir.cn,穿越时空的Linuxsir!

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

如何实现按下Tab键自动补全匹配的字符串并输出?

[复制链接]
发表于 2005-11-25 16:32:30 | 显示全部楼层 |阅读模式
各位大侠我想实现一个类似于在linux的Shell下输入一个命令的一部分当按下tab键时,唯一匹配的命令自动输出来,我想实现这样的效果,请问该怎么实现呀?我写了一个模拟程序((如下),程序要实现的效果如下:比如当程序编译运行后输入ni然后按下tab,这时会自动补全为nihao,我这个程序运行后,结果却是这样:输入ni然后tab,变成ni(后跟8空格), 按回车,在下一行输出hao,我想让按下tab后光标仍然不动,并且不用输入回车就自动补全匹配的字符串,请问该怎样实现?下面的程序可以直接运行,大侠们可以试试,谢谢啦!
#include <stdlib.h>
int main()
{
        char *A[]={"nihao","guangzhou","shanghai","jilin"};
        char a[32]={0};
        char b[32]={0};
        int i,j,k,count=0;
        for(i=0;i<32;i++)
        {
                scanf("%c",&a);
                if(i>=1&&a=='\t')
                {
                        for(j=0;j<4;j++)
                        {
                                if(strncmp(a,A[j],i)==0)
                                {
                                        count++;
                                        k=j;
                                }
                        }
                        if(count==1)
                        {
                                strcpy(a,A[k]);
                                printf("%s",&a);
                                break;
                        }
                }
        }
   }
发表于 2005-11-25 21:46:56 | 显示全部楼层
不行啊。。。。。
回复 支持 反对

使用道具 举报

发表于 2005-11-27 20:02:20 | 显示全部楼层
需要改变终端属性
看一下apue会有帮助
回复 支持 反对

使用道具 举报

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

本版积分规则

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