鱼C论坛

 找回密码
 立即注册
查看: 2857|回复: 11

[已解决]关于c语言汉字输出的问题

[复制链接]
发表于 2017-11-4 17:31:02 | 显示全部楼层 |阅读模式
10鱼币
大佬们,怎么输入一串汉字,然后取到其中一个汉字然后输出。
最佳答案
2017-11-4 17:31:03
#include <stdio.h>
#include <string.h>

int main()
{
    wchar_t str[100];
    int i;
    i=0;
    printf("请输入一段文字:\n");
    wscanf(L"%ls",str);
    getchar();
    printf("你想要第几个字符(不检查越界):\n");
    scanf("%d",&i);
    wprintf(L"%c%c\n",str[i*2],str[(i*2)+1]);
    return 0;
}

我不保证所有平台可以运行,而且貌似如果编码是UTF-8(linux默认就是),估计不能正常运行

最佳答案

查看完整内容

我不保证所有平台可以运行,而且貌似如果编码是UTF-8(linux默认就是),估计不能正常运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-4 17:31:03 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>
#include <string.h>

int main()
{
    wchar_t str[100];
    int i;
    i=0;
    printf("请输入一段文字:\n");
    wscanf(L"%ls",str);
    getchar();
    printf("你想要第几个字符(不检查越界):\n");
    scanf("%d",&i);
    wprintf(L"%c%c\n",str[i*2],str[(i*2)+1]);
    return 0;
}

我不保证所有平台可以运行,而且貌似如果编码是UTF-8(linux默认就是),估计不能正常运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-4 17:41:09 | 显示全部楼层
/* Note:Your choice is C IDE */
#include "stdio.h"
#define A 100
void main()
{
    char h[A];
printf("请你输入一串汉字:");
scanf("%s",h);
printf("Is %s",h);
   
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-4 17:41:33 | 显示全部楼层
首先,你需要一个可以接受汉字输入的函数,推荐fget
用法请查看:
http://bbs.fishc.com/thread-72425-1-1.html

然后,你运行一下下面这段代码:
#include <stdio.h>

int main()
{
        char str[] = "中";
        int length, i;

        length = sizeof(str) / sizeof(str[0]);

        printf("length of str: %d\n", length);

        for (i = 0; i < length; i++)
        {
                printf("str[%d] = %d\n", i, str[i]);
        }

        return 0;
}

看看结果,你应该知道汉字转换为整形一定是负数,然后占两个字节的内存空间

知道上述结论,相信你也有思路了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-4 18:30:10 | 显示全部楼层
汉字问题关乎字节转化问题...新手还是用英文处理就好...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-5 00:06:10 From FishC Mobile | 显示全部楼层
ten$1 发表于 2017-11-4 17:41
/* Note:Your choice is C IDE */
#include "stdio.h"
#define A 100

我最后想输出其中一个汉字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-5 00:07:00 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-11-4 17:41
首先,你需要一个可以接受汉字输入的函数,推荐fget
用法请查看:
http://bbs.fishc.com/thread-72425-1- ...


我想不出怎么把其中一个汉字输出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-5 07:19:14 From FishC Mobile | 显示全部楼层
Sj中国智造 发表于 2017-11-5 00:07
我想不出怎么把其中一个汉字输出来

用一个计数器记录输入的偏移量,根据英文和汉字的不同得到需要提取的偏移量即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-5 09:01:04 From FishC Mobile | 显示全部楼层
BngThea 发表于 2017-11-5 07:19
用一个计数器记录输入的偏移量,根据英文和汉字的不同得到需要提取的偏移量即可

能不能给我一段参考代码,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-5 11:32:17 | 显示全部楼层
仅限要求功能,
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
        char* p=new char[100];
        int count=0;
        /*char str[2] = "";*/
        printf("请输入汉字:");
        scanf_s("%s", p,100);
        printf("要输出第几个汉字:");
        scanf_s("%d", &count);
        count--;
        strcpy_s(p+2*count+2, 1, "");
        printf("%s", p + 2 * count);
        system("pause");
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-6 09:52:47 | 显示全部楼层
汗字的话要看你用什么编码,UTF-8,和GBK的处理方法不一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-6 23:28:46 From FishC Mobile | 显示全部楼层
闪电猫网络 发表于 2017-11-5 11:32
仅限要求功能,

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 20:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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