字符串数组转int数组 C语言中为什么将数组(数组内都是数字)以字符串格式输出会打印出中文?
C语言中为什么将数组(数组内都是数字)以字符串格式输出会打印出中文?
这个问题涉及字符编码和数组存储机制。让我们用一个例子来解释。首先,让我们看看下面的简单程序及其运行结果,如下图所示:
首先,我们定义了两个数组STR1和STR2,一个用汉字初始化,另一个用字节数方式初始化,如第11行所示。表面上看,这两个阵列是完全不同的。让我们以不同的方式输出它们的内容。首先,分别在第13行和第14行以字符串的形式输出它们的内容。右边的程序执行结果显示,它们输出的内容相同——欢迎来到西安。此外,我们还定义了一个数组Arr1并通过数字为其赋值。代码是12行。在15行中,我们将Arr1转换为字符串并输出其内容。我们也得到了同样的结果。接下来,我们以数字方式输出STR1、STR2和pstr3的内容。见本准则第17-28行。在右边的输出结果中,我们可以看到相同的内容以三种方式输出。
从上面的程序可以看出,虽然数组以不同的方式初始化和分配,但是使用相同的输出方法将获得相同的输出结果。可见它们的实质是一样的。
为什么会这样?它涉及到字符的存储。我们知道,计算机内部的数据是由0和1组成的二进制数。为了表示字符,我们需要对它们进行编码。因为计算机技术最初是从美国发展起来的,原来的ASCII编码只包括英文字母、数字和控制字符,总共256个字符。后来,随着计算机的发展,应用越来越广泛,其他国家为了使计算机能够处理自己的语言,他们发明了很多其他的编码方法,各种编码方法之间存在着严重的兼容性问题,所以为了统一,后来人们提出了Unicode编码。在这种编码模式下,每个汉字存储在两个字节中。如果输出为字符串,将显示字符的内容。如果输出为数字,则显示其编码。
目前,大多数现代编译器开始使用Unicode编码字符串。例如,当我使用vs2017时,数组内容是数字,但可以输出中文字符。如果用一些旧的编译器替换相同的代码,可能无法输出汉字,但会输出一些乱七八糟的代码。
提取字符串中连续的数字并将这些数字存放在数组中?
此函数可通过使用sscanf()库函数实现。至于这个功能的用法,在网上很容易找到。例如,sscanf(a,“%[1-9]”,pbuf)将字符串a中的第一个数字存储在pbuf缓冲区中。现在,sscanf函数的具体用法有时会描述如下,希望对您有所帮助:Name:(R sscanf()—从与指定格式匹配的字符串中读取数据。函数原型:(r int sscanf(string STR,string FMT,mixed VAR1,mixed var2…),(r int scanf(const char*format[,argument]…),(r头文件):(r
字符串数组转int数组 字符串数组中提取数字 字符串数组追加字符串
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。