鱼C论坛

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

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

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

  3. int main()
  4. {
  5.     wchar_t str[100];
  6.     int i;
  7.     i=0;
  8.     printf("请输入一段文字:\n");
  9.     wscanf(L"%ls",str);
  10.     getchar();
  11.     printf("你想要第几个字符(不检查越界):\n");
  12.     scanf("%d",&i);
  13.     wprintf(L"%c%c\n",str[i*2],str[(i*2)+1]);
  14.     return 0;
  15. }
复制代码


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

最佳答案

查看完整内容

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

使用道具 举报

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

  3. int main()
  4. {
  5.     wchar_t str[100];
  6.     int i;
  7.     i=0;
  8.     printf("请输入一段文字:\n");
  9.     wscanf(L"%ls",str);
  10.     getchar();
  11.     printf("你想要第几个字符(不检查越界):\n");
  12.     scanf("%d",&i);
  13.     wprintf(L"%c%c\n",str[i*2],str[(i*2)+1]);
  14.     return 0;
  15. }
复制代码


我不保证所有平台可以运行,而且貌似如果编码是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

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

  2. int main()
  3. {
  4.         char str[] = "中";
  5.         int length, i;

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

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

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

  12.         return 0;
  13. }
复制代码


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

知道上述结论,相信你也有思路了
想知道小甲鱼最近在做啥?请访问 -> 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 | 显示全部楼层
仅限要求功能,
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main()
  5. {
  6.         char* p=new char[100];
  7.         int count=0;
  8.         /*char str[2] = "";*/
  9.         printf("请输入汉字:");
  10.         scanf_s("%s", p,100);
  11.         printf("要输出第几个汉字:");
  12.         scanf_s("%d", &count);
  13.         count--;
  14.         strcpy_s(p+2*count+2, 1, "");
  15.         printf("%s", p + 2 * count);
  16.         system("pause");
  17.         return 0;
  18. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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-4-24 22:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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