-
C语言字符串与字符数组5
#include "stdafx.h" #include "string.h" int main(int argc, char* argv[]) { //char b[5] = {"hello"}; //编译时报错 char b[6] = {"hello"}; //或 //char b = {"hello"}; //正确 char a[5] = {'h', 'e', 'l', 'l', 'o'}; printf("hello:%s\n", b); printf("b length is : %d\n", strlen(b)); printf("a length is : %d\n", strlen(a)); return 0; }
此时的输出如下
如果将代码char a[5] = {'h', 'e', 'l', 'l', 'o'};
修改为char a[6] = {'h', 'e', 'l', 'l', 'o', '\0'};
则输出为
问题:
1.为什么第一次的执行“printf("a length is : %d\n", strlen(a));”的输出结果是“13”?
2.对于'\0'是不是字符串会自动在后面加上而字符数组中则不会加上,那么字符数组中何时会出现'\0'字符?
问题补充:grhappygr 写道楼上有几个错误,字符串数组有时不会填\0,当数组大小等于字符串大小的时候没有位置添加\0,也就是说b[n>5]="hello"的情况时才会添加\0,所以b[6]时strlen()正确,因为strlen以“\0"判断,这点要和sizeof区分
而出现11的情况,你要懂得a,b的内存分配,其实是a连接在了没有\0结尾的b上得结果,可以查看a,b的地址printf("%X %X",&a,&b)来判断;
printf("a = %x, b = %x, a[1] = %x, a[2] = %x, a[3] = %x, a[4] = %x, a[5] = %x,a[4] = %x, a[5] = %x \n", a, b, &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7]); printf("a[5] = %d, a[6] = %d, a[7] = %d, b[5] = %d\n", a[5], a[6], a[7], b[5]);
输出结果如下:a = 12ff70, b = 12ff78, a[1] = 12ff71, a[2] = 12ff72, a[3] = 12ff73, a[4] = 12ff 74, a[5] = 12ff75,a[4] = 12ff76, a[5] = 12ff77 a[5] = -52, a[6] = -52, a[7] = -52, b[5] = 0
字符'\0'对应的ASCII妈值为0,ASCII值为0的字符对应的为空字符'NUL',不执行任何操作,对程序无影响。
2011年10月13日 23:18
3个答案 按时间排序 按投票排序
-
采纳的答案
楼上有几个错误,字符串数组有时不会填\0,当数组大小等于字符串大小的时候没有位置添加\0,也就是说b[n>5]="hello"的情况时才会添加\0,所以b[6]时strlen()正确,因为strlen以“\0"判断,这点要和sizeof区分
而出现11的情况,你要懂得a,b的内存分配,其实是a连接在了没有\0结尾的b上得结果,可以查看a,b的地址printf("%X %X",&a,&b)来判断;2011年10月16日 00:15
-
字符串他默认后面会帮你加'\0',计算strlen的时候,他是从首地址开始hello中的h开始,一直碰到第一个'\0'才返回了。计算之间的字符个数。不同的电脑可能算出来a的长度不尽相同,跟内存有关。。好久没用C了。。
2011年10月14日 08:54
相关推荐
纯C语言实现字符串拆分操作,把字符串拆分成字符串数组,然后再输出。 使用sstream方法,作为底层驱动操作实现非常方便。
8. 字符数组与字符串的关系:理解如何在字符数组中操作字符串,包括动态分配内存和释放内存。 在解题过程中,"C语言练习字符串答案.txt"文件提供了参考解答,帮助学习者检查自己的理解是否正确,或者提供解题思路。...
6.5 C语言字符串处理函数 C语言中的字符串处理函数提供了丰富的功能,如`printf("%s", str)`用于打印字符串,`gets()`和`sprintf()`用于读写字符串,`strchr()`查找子串,`strstr()`查找字符串出现的位置等。 6.6 ...
C语言 获取字符串中的数组C语言 获取字符串中的数组C语言 获取字符串中的数组C语言 获取字符串中的数组
C语言用指针将字符串数组位置颠倒,实现ABCDEFGHIJKLMNOPQRSTUVWXYZ转换成ZYXWVUTSRQPONNOPQRSTUVWXYZ
C语言中,字符的操作有多种方法,这里主要是特有的字符串库函数进行操作,简化编程过程,增强学生对字符串及字符操作的理解。
以上就是C语言字符串快速压缩算法的实现细节。这个算法体现了C语言中对字符串的基本操作,包括字符数组的使用、字符串函数(如`strlen`)的调用以及自定义字符串处理逻辑。同时,它也展示了如何处理多种情况和数据...
C语言字符串数组是指以字符数组形式存储的字符串,在C语言中,字符串作为字符数组来处理。字符数组的初始化可以用逐个字符赋值的方式,例如`char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y'};`,也可以用...
C语言字符数组与字符串的使用详解 C语言中,字符数组和字符串是两个紧密相关的概念。字符数组是指由多个字符组成的数组,而字符串则是指一个以`\0`结尾的字符序列。在C语言中,字符串可以看作是一个特殊的字符数组...
字符数组的概念、使用 字符串的概念 字符数组与字符串的关系 常用字符串处理函数的使用
#### 二、字符数组与字符串 1. **字符串的概念**: - 在C语言中,字符串被视作一个字符数组,其中最后一个字符必须是字符串终止符`'\0'`。 - 例如,`"C Program"`实际上占用10个字节的空间,其中前9个字节存放...
字符数组转换成字符串是常见的操作,尤其在C语言及其衍生的编程语言中。这个过程涉及到字符数组的处理、字符串的定义以及数据类型间的转换。下面我们将详细探讨这一主题。 首先,我们要了解字符数组和字符串的基本...
在C语言中,字符串是一种特殊的字符数组,它们以空字符'\0'作为结束标识。本文主要探讨了C语言中字符数组的定义、初始化以及字符串的表示形式。 首先,字符数组的定义与初始化是通过声明一个字符类型(char)的数组来...
内容概要:本文深入探讨了C语言数组与字符串的相关技术和应用。介绍了基本概念和技术方法,如数组的基础操作与多维数组的应用、各种常用的字符串操作和相关函数使用、字符串数组处理、字符串的搜索和替换功能、以及...
本文档在某知名网站下载,要么浏览量最多,要么最新,保证精品,至少为你节约3RMB。格式为caj或者kdh需要专业阅读器打开。
由于C语言并没有专门的字符串类型,我们通常使用字符数组来表示字符串。然而,指针是C语言中非常重要的一个概念,它能指向内存中的任何数据。在处理字符串时,我们可以使用指针来操作字符串,这就是所谓的“字符串...
接下来详细说明标题和描述中提及的C语言字符串操作函数。 首先,`strcpy` 函数的用途是将源字符串 `source` 完整拷贝到目标字符串 `destin` 中,并且包括源字符串的终止符 '\0'。这个函数不会检查目标数组是否有...
c语言字符串数组输入输出
基本的C语言字符串输入通常使用`scanf()`函数,如下所示: ```c char strings[SIZE][100]; scanf("%s", strings[i]); ``` 这里,`strings`是一个二维字符数组,`SIZE`是数组的大小,`100`是每个字符串的最大...
c语言实现字符串分割split(), 实现C语言实现按分隔符来截取字符串