很久没有见到这个问题了

C语言 全角半角

1. 全角是什么?

全角是什么?

2. 半角是什么?

半角是什么?


#include<stdio.h>
#include<ctype.h>
#include<string.h>// 这两个是全角半角切换的函数
// 下面就是把一个占用一个字节的字符转为占用两个字节的字符
void quan_to_ban(char quan[], char *ban); // 全--半角 *ban *quan 这玩意是指针
void ban_to_quan(char ban[], char *quan); // 半--全角// 因为汉字占用两个字节,所以全角半角汉字都一样
//汉字对应的ASCLL:https://blog.csdn.net/qq_44009311/article/details/86650341/*下面最好对着运行结果理解 */
int main() {int i;/*1. 测试*/printf("\161\n"); // 直接输出半角字符printf("%d %d\n", '\161', 'q'); // 他们的数值是一样的,这个同ASCII一样是有字典的 ,你可以自己写个循环打印printf("半角[%s]的长度为:%d\n", "\161", strlen("\161")); // 先看看半角的长度// 把 "\161" 转为全角试试char q[100];ban_to_quan("\161", q);printf("全角[%s]的长度为:%d\n", q, strlen(q)); // 在看看全角的长度puts("\n\n");/*2. 半角转全角*/char s_ban1[] = "q r s";char s_quan1[100];  // 这个大小最少要 strlen(s)*2,因为通过a的长度可以看出全角是半角的2倍。一般给他的三四倍,多余也没事,起码不会出现段错误ban_to_quan(s_ban1, s_quan1);printf("[%s]转为全角[%s]\n", s_ban1, s_quan1); // s转为t,你会发现打印出来的字母和空格,空格的距离会变得很远,这就是全角for(i=0; i<strlen(s_quan1); i+=2) { // 打印的时候需要两个字符连在一起【同打印汉字】printf("%c%c,", s_quan1[i],s_quan1[i+1]);}puts("\n\n");/*3. 全角转半角*/// ***切换输入法为全角模式,再重新赋值【输入法菜单栏一般会有月亮,太阳是全角,月亮是半角[默认:shift+空格]】char s_quan2[] = "q r s"; // 从样式就可以看出全角半角区别吧char s_ban2[100];quan_to_ban(s_quan2, s_ban2); //  s_quan2转为半角,返回到 s_ban2中printf("[%s]转为半角[%s]\n", s_quan2, s_ban2);return 0;}/**///全角转半角  quan --> ban, ban通过指针返回
void quan_to_ban(char quan[], char *ban) {for(; *quan; ++quan) { // 循环替换if((*quan & 0xff) == 0xA1 && (*(quan + 1) & 0xff) == 0xA1) {      //全角空格*ban++ = 0x20;++quan;} else if((*quan & 0xff) == 0xA3 && (*(quan + 1) & 0xff) >= 0xA1 && (*(quan + 1) & 0xff) <= 0xFE)  //ASCII码中其它可显示字符*ban++ = *++quan - 0x80;else {if(*quan < 0)    //中文占用两个字节*ban++ = *quan++;*ban++ = *quan;}}*ban = '\0'; // 最后一个要结尾符
}
//半角转全角
//输入半角字符串ban,返回全角字符串*quan
void ban_to_quan(char ban[], char *quan) {for(; *ban; ++ban) { // 循环替换if((*ban & 0xff) == 0x20) {  //半角空格*quan++ = 0xA1;*quan++ = 0xA1;} else if((*ban & 0xff) >= 0x21 && (*ban & 0xff) <= 0x7E) {*quan++ = 0xA3;*quan++ = *ban + 0x80;} else {if(*ban < 0)   //中文占用两个字节*quan++ = *ban++;*quan++ = *ban;}}*quan = '\0'; // 最后一个要结尾符
}

C语言 全角半角 测试相关推荐

  1. c语言全角半角转换函数,全角半角转换函数(示例代码)

    --(此函数部分思路参考了CSDN上大力的转换函数)--邹建2005.01(引用请保留此信息)--*/ Go --创建函数 create functionSBC2DBC (@str nvarchar( ...

  2. java 判断全角_Java如何判断字符串中包含有全角,半角符号

    首先介绍下全角跟半角之间的区别: 在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角" ...

  3. Java如何判断字符串中包含有全角,半角符号

    一.全角跟半角之间的区别 在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为"半角",相对地把一个汉字所占的位置称为"全角".在汉 ...

  4. 计算机中全半角转换是干什么的,全角半角切换快捷键(电脑全角和半角怎么切换)...

    搜狗输入法的全角半角切换键是:shift+空格键 (如当前在半角状态,按shift+空格键可以切换至全角:如当前在全角状态,按shift+空格键可以切换至半角) 半角与全角切换的意义 1.添加输入法不 ...

  5. 我的Android进阶之旅------gt;Java全角半角的转换方法

    一中文全角和半角输入的区别 1全角指一个字符占用两个标准字符位置 2半角指一字符占用一个标准的字符位置 3全角与半角各在什么情况下使用 4全角和半角的区别 5关于全角和半角 6全角与半角比较 二转半角 ...

  6. php字符串处理之全角半角转换(正则匹配全角字符思路)

    半角全角的处理是字符串处理的常见问题,本文尝试为大家提供一个思路. 一.概念 全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)例如:/[\x{3010} ...

  7. java 全角_java 全角半角字符转换的方法实例

    这篇文章主要介绍了java 全角半角字符转换的方法,大家参考使用吧 如果搞明白了Java中全角字符和半角字符之间的关系 那他们之间的转换根本就不是个事. 可以通过下面的程序看看Java中所有字符以及对 ...

  8. php 半角全角,php字符串处理之全角半角转换

    半角全角的处理是字符串处理的常见问题,本文尝试为大家提供一个思路. 一.概念 全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E) 半角字符unicode编 ...

  9. win10禁用全角_win10系统屏蔽全角/半角快捷键的操作办法

    win10系统使用久了,好多网友反馈说关于对win10系统屏蔽全角/半角快捷键设置的方法,在使用win10系统的过程中经常不知道如何去对win10系统屏蔽全角/半角快捷键进行设置,有什么好的办法去设置 ...

最新文章

  1. 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第二步)(4)...
  2. 定时器java执行越来越晚,虽然Java是解释型语言,但随着随着(???????????)编译器技术的发展,Java程序的运行速度越来越接近于C 等编译型语言。...
  3. Android-一张图理解MVP的用法
  4. 贫血的Domain Model之说
  5. Deeplearning4j 手写体数字识别
  6. 里面的自带的字典在哪里_自带话放的声卡“秘密”
  7. discuz开发学习
  8. 使用idea进行svn分支管理-初稿
  9. Linux系统蓝牙WiFi抓包命令
  10. matlab利用gui谐波分析,matlab中fft谐波分析
  11. 1.5 18:鸡尾酒疗法
  12. be idle sometimes to_英语美文_双语美文:趁着年轻做自己想做的事_沪江英语
  13. Windows 清除DNS缓存C++实现
  14. guzzlehttp/guzzle使用
  15. 错过了淘宝、拼多多,今年的电商风口抖音小店无货源你能抓住吗?
  16. 《python 程序设计》读书笔记
  17. Android获取内置sdcard跟外置sdcard路径
  18. vba 之判断工作表是否处于保护状态:Worksheets.ProtectContents
  19. 文档中多余的分页符的删除
  20. [经济生活基本知识]商品,货币,价值规律

热门文章

  1. (转)左手坐标系和右手坐标系
  2. 博士申请 | 美国东北大学徐啸林老师招收机器学习安全方向全奖博士生
  3. MyBatis中insert将数据插入mysql数据库,显示成功但是数据库不显示数据
  4. 如何选择入门级服务器,CPU
  5. Java SubList 类 Java subList方法 Java ArrayList$SubList 方法特点 SubList 用法
  6. java+jsp基于ssm小熊猫水果管理系统
  7. python mkl 锐龙 cpu_锐龙4800h笔记本安装Ubuntu20.04.1填坑实录
  8. 开咖啡店最重要的是什么?这些理论知识你需要掌握
  9. Python 之真假“美猴王”
  10. 枚举到底是个什么鬼类型?