LinuxSir.cn,穿越时空的Linuxsir!

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

C语言如何从终端输入汉字?

[复制链接]
发表于 2009-6-14 20:04:34 | 显示全部楼层 |阅读模式
请看下面的程序:
#include <stdio.h>

static int gline(char *s, int lim) {
            char *t;
        int c;

            t = s;
        while (--lim>1 && (c=getchar()) != EOF && c != '\n')
            *s++ = c;
            *s = '\0';
        return s - t;
}

int main()
{
        char input[400];
        int len;
        len = gline(input, 400-1);
        printf("%s\n",input);
}
如果从终端输入汉字是乱码,怀疑是输入工具的问题,如果把汉字粘贴到终端上,可以正常打印。
大家帮忙看看这个问题如何解决?
发表于 2009-6-14 21:41:02 | 显示全部楼层
试了下,scim输入没问题阿,能打印
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-14 22:14:25 | 显示全部楼层
Post by x11;1997863
试了下,scim输入没问题阿,能打印


我就是用scim输入的呀!怎么不行?
你试了上面的代码了没有?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-14 22:17:46 | 显示全部楼层
对不起!应该是我的系统的问题!我的64位机子就没有问题,但是32机子有问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-14 22:25:41 | 显示全部楼层
大家都试试上面的代码,有出现问题的没有?
回复 支持 反对

使用道具 举报

发表于 2009-6-15 09:25:09 | 显示全部楼层
我测试,楼主的代码没有问题。可以正常输入,所以肯定是楼主的系统配置问题,与程序无关。

本人使用输入法为scim
回复 支持 反对

使用道具 举报

发表于 2009-6-15 21:52:33 | 显示全部楼层
我的是32位的机器,没有问题,输入法同上。五笔输入的。
回复 支持 反对

使用道具 举报

发表于 2009-6-22 18:43:34 | 显示全部楼层
locale -a 查看下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-25 21:45:57 | 显示全部楼层
应该是我的konsole的问题( opensuse 10.3)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-26 17:24:34 | 显示全部楼层
现在学习readline库,发现问题解决了,随然我的konsole有问题但是使用readline之后就能实现中文的输入了。
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>

static char *line_read = (char *)NULL;

char *rl_gets()
{
        if(line_read)
        {       free (line_read);
                line_read = (char *)NULL;
        }
        line_read = readline("lease Enter:");

        if(line_read && *line_read)
                add_history(line_read);
        return(line_read);
}

int main()
{ char *mline;
        mline = rl_gets();
        printf("%s\n",mline);
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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