#include<stdio.h>
#include<string.h>
main()
{char x[]="STRING";
x[0]=0;x[1]='\0';x[2]='0';
printf("%d",strlen(x));
} 为什么答案是0
c语言strlen函数问题
1、strlen实际上是,从参数表示的地址往后找,找到第一个'\\0',即串尾。然后计算'\\0'至首地址的“距离”,即隔了几个字符,从而得出长度。2、char x[]={0xBC,0xDD,0xCA};中,实际上是定义了一个char型的数组,而由于x[0],即0xBC开始往后找,一直到0xCA,都没'\\0',所以会继续往后。...
关于strlen的问题,想不通为什么
(2)size = sizeof(name); \/\/letters = strlen(name);size值会是40 ,而letters将是随机的,因为strlen函数计算字符串的长度时是以'\\0'为结束的,也就是不管name数组有多长,计算长度时会从name开始一直向后统计长度,遇到‘\\0’才表示字符串结束,这个长度就是strlen返回的长度。在(2)处如果...
关于strlen的问题,想不通为什么
char name[40];定以后没有初始化,刚申请到的40个空间里其实是有数据的,所以用strlen会得到错误的数据,而且不一定是45 你可以手动设置name[0]='\\0'或者全部赋值0;
strlen函数 问题
strlen(s)是当查到\\0时计算结束,但不将\\0计算在内。因为你用的是数组,所以要减一,比如说strlen(s)=5,s[5]是从s[0]到s[4]就表示了5个数。你这里的函数应该还有个问题,while(i<=n)才可以
strlen函数问题
赋值给char型变量时,0和‘\\0’是等价的,strlen函数计算字符串长度时是到第一个‘\\0’为止,之前的字符个数就是strlen的返回值。所以第一个字符就遇到‘\\0’了,字符串长度自然是0。
strlen()函数的问题
strlen是从“头”开始,找到第一个'\\0',当这个是尾,然后算这个头尾距离得出字符串长度。C里面,是没有汉字的。所谓的存储汉字,实际上是用了两个字符的位置,输出的时候在组合成一个汉字。在内存里面,是拆成了两个相邻的字符存储。算出是5的原因,应该是存储某一汉字时,其中一个字符恰好是'\\0...
使用strlen()函数的问题
字符串和字符数组的区别:字符串用字符数组保存,表示的是字符数组首地址到第一个'\\0'为止的内容。你的程序里,strlen(a)等于7,其实是strlen越界访问了。在a的4个字节后面,有一些未使用的内存,那边前3个字节非0,第4个字节是0,所以合起来'\\0'前面有7个非0字符。
关于strlen()函数的问题
字符串的最后一个是\\0; strlen就是从指定位置开始,过了多少个读到0,就是几。s+1 在这里是将s的位置往后面挪一个,起始位置往后了,自然少读一个就到0了。
C语言 strlen()函数的问题
你这个代码是有问题的,使用strcat的时候,第一个字符串的存储空间必须足够大,能放下第一个字符串和第二个字符串加起来的长度,注意这一点。你的问题 第一个 : str1末尾的‘\\0’不会被保留 第二个问题 : 合并后str1的最末尾会有'\\0'的存在,字符串结束标志,...
有关strlen函数的问题
是不确定的。不同的编译器读取的不一样,但总能找到并读取到‘\\0’结束符。就那我的编译系统来说吧,得到的结果是15 10.include<stdio.h> int main(void){ char str[10]="0123456789";int a=strlen(str);int b=sizeof(str);printf("%d%10d",a,b) ;getch();return(0);} ...