strlen求字符串写法
时间: 2024-02-22 15:51:23 浏览: 15
strlen函数是C语言中的一个字符串函数,用于计算字符串的长度,即字符串中字符的个数(不包括字符串末尾的'\0')。其函数原型为:
```c
size_t strlen(const char *s);
```
其中,参数s是指向要计算长度的字符串的指针。函数返回值是字符串的长度。
strlen函数的实现方式可以有多种,以下是一种常见的实现方式:
```c
size_t strlen(const char *s) {
const char *p = s;
while (*p != '\0') {
p++;
}
return p - s;
}
```
该实现方式使用了指针p来遍历字符串,当p指向字符串末尾的'\0'时,循环结束。最后返回p与参数s之间的差值,即字符串的长度。
相关问题
strlen(AL01)等于多少
`strlen(AL01)` 是一个C语言中的字符串函数,用于计算字符串的长度(不包括字符串末尾的空字符`\0`)。如果AL01是一个字符串,那么 `strlen(AL01)` 返回的值是AL01字符串的长度。如果AL01不是一个字符串,那么`strlen(AL01)` 的行为是未定义的,可能会导致程序崩溃或产生其他意外的结果。
需要注意的是,AL01字符串常量的写法应该是用双引号括起来的,如 `"AL01"`,而不是单引号。如果AL01是一个变量名,那么需要先将其定义为一个字符串类型的变量,才能使用 `strlen()` 函数计算它的长度。
/*调用merge函数,实现将指针s所指的字符串的反序和正序连接*/ #include<stdio.h> #include<string.h> int main() { char str[100]; void merge(char *s);//声明要调用的函数 printf("Please enter a string:"); gets(str); merge(str); return 0; } void merge(char *s) { char *p,*q,n; n= strlen(s);//n为指针s指向的串的长度 for(p=s+n-1,q=s+n;p>=s;p--,q++) *q=*p;//反序存放 *q='\0'; //添加字符串结束标记 }可以指出这个和之前的区别吗?我学习一下
这个代码和之前的代码相比,主要有以下几个区别:
1. 在调用merge函数之前,只声明了merge函数的名称,而没有声明函数的参数类型和返回值类型。这种写法在C语言中是允许的,但是不够规范,不利于代码的维护和阅读。
2. 在调用merge函数之后,没有输出结果,无法查看程序的执行结果。建议添加一行代码,输出合并后的字符串。
3. 在merge函数中,变量n的类型为char,不太合适,因为字符串的长度通常超过了char类型的范围。建议将n的类型改为int。
4. 在merge函数中,反序存放字符串的代码没有问题,但是正序存放的代码却没有出现。按照题目的要求,merge函数应该实现将指针s所指的字符串的反序和正序连接,也就是说,需要在反序存放后,再将原字符串正序存放一遍。这个问题需要在代码中补充一下。
完善后的代码如下:
```c
#include<stdio.h>
#include<string.h>
void merge(char *s);
int main() {
char str[100];
printf("Please enter a string:");
gets(str);
merge(str);
printf("Result:%s\n", str);
return 0;
}
void merge(char *s) {
char *p,*q;
int n = strlen(s);
for(p=s+n-1,q=s+n;p>=s;p--,q++)
*q=*p;//反序存放
for(p=s,q=s+n;p<s+n;p++,q++)
*q=*p;//正序存放
*q='\0'; //添加字符串结束标记
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)