Yaner2002
Yaner2002
2020-12-27 21:17
采纳率: 100%
浏览 117

C语言中如何输出wchar_t数组中的指定位置的单个汉字

目标效果:输出wchar_t数组中第i个汉字,

以下方式已经被验证不能实现【输出第1个汉字】的效果:

#include<stdio.h>

int main(){
	wchar_t string[10];
	printf("输入一个汉字字符串:");
	scanf("%s",string);
	
	printf("\n用%%s输出整个字符串:%s",string);//可以一次性输出所有汉字

	printf("\n用%%c输出第一个汉字:%c",string[0]);//不能输出单个汉字
	printf("\n用%%lc输出第一个汉字:%lc",string[0]);//不能输出单个汉字
	printf("\n用%%wc输出第一个汉字:%wc",string[0]);//不能输出单个汉字
	return 0;
} 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • qq_40693603
    sinJack 2020-12-28 10:03
    已采纳

    点赞 评论
  • qq_40693603
    sinJack 2020-12-28 10:03
    #include <wchar.h>
    #include <locale.h>
    //scanf、printf都只能输入、输出不加L的窄字符
    //输入、输出宽字符串可以使用 <wchar.h> 头文件中的wscanf、wprintf 函数,wprintf 对应的格式控制符是%lc。 
    //宽字符的输入输出前面需要加上L,告诉编辑器是宽字符
    int main(){
        wchar_t strings[10];
        setlocale(LC_ALL, "chs");//指定字符区域为中文
        printf("输入一个汉字字符串:");
        wscanf(L"%ls",strings);//宽字符的输入输出前面需要加上L,告诉编辑器是宽字符
        printf("当前输入的汉字字符串内容为:");
        wprintf(L"%s\n",strings);
    	for(int i=0;i<wcslen(strings);i++){
    		printf("输出第%d个汉字:",(i+1));
    		wprintf(L"%lc\n",strings[i]);
    	} 
        return 0;
    }
    
    点赞 2 评论
  • jslang
    天际的海浪 2020-12-27 22:09
    点赞 评论
  • Yaner2002
    Yaner2002 2020-12-27 23:23

    这篇文章里面用的是%ls,一次性输出整个字符串,并不是我想要实现的“输出单个汉字”的效果

    点赞 评论
  • jslang
    天际的海浪 2020-12-27 23:39

        wscanf(L"%ls",string);//输入值。
        wprintf(L"%lc",string[0]);//输出值。
     

    点赞 评论
  • Yaner2002
    Yaner2002 2020-12-27 23:55

    还是不行,如果方便的话,麻烦您附上您的运行结果

    点赞 评论
  • jslang
    天际的海浪 2020-12-28 04:48

    一个汉字是两个字节。要连续输出数组的两个元素才能组成一个汉字
     

    #include<stdio.h>
    #include <windows.h>
    
    int main(){
        wchar_t str[10];
        printf("input:");
        wscanf(L"%ls",str);//输入值。
        wprintf(L"str=%lc%lc\n",str[0],str[1]);//输出值。
        system("pause");
        return 0;
    }
    
    点赞 评论
  • jslang
    天际的海浪 2020-12-28 04:49

     

    点赞 评论
  • jslang
    天际的海浪 2020-12-28 05:13

    更正,应该加    setlocale(LC_CTYPE, "chs");

    #include<stdio.h>
    #include <stdlib.h>
    #include <wchar.h>
    #include <locale.h>
    
    int main(){
        wchar_t str[10];
        setlocale(LC_CTYPE, "chs");
        printf("input:");
        wscanf(L"%ls",str);//输入值。
        wprintf(L"str=%lc\n",str[0]);//输出值。
        system("pause");
        return 0;
    }
    
    点赞 评论

相关推荐