
strlen的结果要在运行的时候才能计算出来,主要用来计算字符串的
长度
,不是类型占内存的大小,strlen只能用char做参数,且必须是以''\0''结尾的。
1、第二个元素就是\0
所以得到字符串长度为1
2、\t
\v
\\都是转义字符,为三个字符,后面又是\0,所以长度为3
3、\x69就是16进制的69,十进制为105,查看ascii表对应字符,而\xxx指的是一个八进制值所对应字符,但是\082显示不是,八进制只有0-7的数字,所以这里只是一个\0
和数字
82
字符串长度为1
如果要获得每个数组中有多少个字符可以考虑用sizeof可以将整数当做字符串(字符串长度不超过10)接收,然后反向输出字符数组元素即可。字符串实际长度可以用strlen函数来计算。方法
程序
如下:
#include<stdioh>
#include<stringh>
main()
{char a[10];int i,j;
scanf("%s",a);
j=strlen(a);
for(i=j-1;i>=0;i--)
printf("%c",a[i]); printf("\n");}
C语言高效编程技巧:
一:以空间换时间
计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题
二:数学方法解决问题
数学是计算机之母,没有数学的依据和基础,就没有计算机发展,所以在编写程序的时候,采用一些数学方法会对程序的执行效率有数量级的提高。
三:使用位 *** 作
实现高效的C语言编写的第三招----使用位 *** 作,减少除法和取模的运算。
在计算机程序中,数据的位是可以 *** 作的最小数据单位,理论上可以用“位运算”来完成所有的运算和 *** 作。一般的位 *** 作是用来控制硬件的,或者做数据变换使用,但是,灵活的位 *** 作可以有效提高程序运行的效率。参考资料来源:百度百科-C语言c 程序, 用自定义函数 my_strlen,例子如下:
#include<stdioh>
int my_strlen(char s){
int n=0;
while(1){
if (s[n]!='\0')n++; else return n;
};
}
int main()
{char s[]="abcde 123";
int L;
L = my_strlen(s);
printf("the length of the string is: %d\n",L);
}
输出:the length of the string is: 9
C语言字符串长度的计算是编程时常用到的,也是求职时必考的一项。
C语言本身不限制字符串的长度,因而程序必须扫描完整个字符串后才能确定字符串的长度。
在程序里,一般会用strlen()函数或sizeof来获取一个字符串的长度,但这2种方法获取的字符串的长度其实是不一样,我们用如下函数进行测试:
void test6()
{
char s1[20] = "hello world";
char s2[20] = {'h','e','l','l','0',' ','w','o','r','l','d','\0'};
char s3[] = "hello\0 world";
char s4[] = {'h','e','l','l','0','\0',' ','w','o','r','l','d','\0'};
printf("%d\t%d\t%d\t%d\n",strlen(s1),strlen(s2),strlen(s3),strlen(s4));
printf("%d\t%d\t%d\t%d\n",sizeof(s1),sizeof(s2),sizeof(s3),sizeof(s4));
}
注意,该函数里面定义了4个字符串,基本数据都是“hello world",但需要注意的是,字符串s1和s2给定了字符串数组的大小为20,然后使用2种方式进行赋值;字符串s3和s4是s1和s2对比的字符串,区别就是s3和s4字符串中间插入了一个'\0'。该函数运行的结果如下:
从运行结果可以看出,strlen()函数和sizeof求字符串长度需要注意下面几点:
1 strlen函数求得的字符串长度是从字符串第一个元素到第一个'\0'之间元素的个数(如果字符串中间有'\0',则结果不是整个字符串的长度),同时不包括该'\0'
2 sizeof求得的结果是存储该字符串的变量占用的空间大小,因而一定会包括'\0'若'\0'后还有空余的空间,也会包含到结果里面
解释(与2种求值方式的实现原理有关):
1 strlen()的一种实现就是遍历字符串,遇到'\0'就终止,因而返回的结果是第一个'\0'前字符元素的个数
2 sizeof 常用来求变量占用内存空间的大小,因而它返回的是存储字符串的变量所占用的内存空间大小,用来求字符串的长度,只在特定情况下可行,即字符数组刚好被一个字符串占满。
谢谢采纳。01首先,我们输入头文件:#include<stdioh>
#include<stringh>
02接着,我们输入程序,请求用户输入字符串,再计算字符串的长度。
03运行程序,检测没有错误后,点击右上方的"!",执行程序。
04 程序执行结果如图所示,我们任意输入一个字符串。05
按enter键,如图所示,系统就计算出了字符串的长度。#include <stdioh>
#include <stdlibh>
int main()
{
char s[1000];
int i;
gets(s); //读入字符串
i = -1;
while(s[++i] != '\0') //计算字符串长度
;
printf("%d\n",i); //输出长度
return 0;
}
//请采纳。c语言编写计算字符串长度的程序是一个经典的面试问题,有几种经典的答案:
1,循环
定义一个指针 char p = str;
int count = 0;
while (p != \0){
p++; count++;
}
2, 递归
3,最简短的,利用地址的差
while(p++);len = p - str;原文地址:

