strlen用法,getchar的用法
大家好,感谢邀请,今天来为大家分享一下strlen用法的问题,以及和getchar的用法的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
请问C++中strlen()用法
楼上GhostWzf和rianj均为正解,这里补充一下
--------------------
需要明确的第一点,strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。
例如以下代码片断理论上也是可以编译通过的:
char str[]="abcdefg";
printf("%d\n",strlen(&str[5]));
结果应当为2。
该例中,strlen从字符str[5]即'f'开始计数,当到达'g'之后遇到'\0'并停止计数。因此结果为2。
针对你提出的问题,相关补充如下:
-----------------
str0被声明为8个单元的字符数组,而通常情况下,我们需要这样对其进行初始化:
char str0[8]={'a','b','c','d','e','f','g'};
str0[7]='\0';
其中第二行也可以写成 str0[7]=0;或者 str0[7]=NULL(针对部分编译器,第二行也可以省略不写,但是不推荐这么做。)
而str1被声明为一个字符串,在字符串初始化时,编译器将自动为其尾端添加终结符'\0'。
-------------------
str2和str3的主要区别就在于C/C++字符串中,允许形如“\056”这样的所谓转义字符存在,它们仅表示一个字节位(byte),一般用于输出无法直接通过键盘输入的字符。
具体内容请参考相关教材。
C语言中 strlen函数用法的问题
printf("%*d%*d\n",strlen(firstname),strlen(firstname),strlen(sumame), strlen(sumame));
这个是输出匹配的问题。
举个例子
printf("%5d",5);就会给你5个空间输出5,前面4个空格,然后输出5.
printf("%*d",5,5);和上面一样,利用*匹配5控制输出宽度。就是四个空格5.
同理上面的第一个strlen是作为输出宽度而存在的,也就是说给你字符串长度个空间,用于存放字符串长度的变量。
比如输入
we
women
就相当于
printf("%*d%*d",2,2,5,5);
相当于
printf("%2d%5d",2,5);输出【1个空格】2【4个空格】5
C语言中sizeof与strlen的区别是什么
一、指代不同
1、sizeof():用于获取字符串的长度,是处理字符串的重要工具。
2、strlen:所作的是一个计数器的工作。
二、规则不同
1、sizeof:可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,不需要用圆括号。
2、strlen:从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。
三、用法不同
1、sizeof:sizeof( type_name);// sizeof(类型);编译时起作用,而不是运行时。
2、strlen:externunsignedintstrlen(char*s);返回s的长度,不包括结束符NULL。
参考资料来源:百度百科-sizeof()
参考资料来源:百度百科-strlen
关于strlen用法到此分享完毕,希望能帮助到您。