strlen 字符指针
时间: 2024-08-13 15:09:40 浏览: 38
`strlen` 函数是 C/C++ 标准库中的一个函数,用于计算字符串(即字符数组)中实际字符的数量(不包括空字符'\0')。它接受一个字符指针作为参数,这个指针指向字符串的第一个元素。函数逐个检查从该指针开始的每个字符,直到遇到空字符为止,然后返回已找到的非空字符的计数。
例如:
```cpp
char str[] = "Hello, World!";
size_t len = strlen(str); // len 将会被赋值为 13,因为"Hello, World!"共有12个字符加上结尾的'\0'
```
相关问题
3.用指针编写程序,当从键盘输入一个字符串后要求: (1统计这个字符串的长度(用子西数,参数是字符指针,不能用 strlen) (2)统计这个字符串中数字字符的个数(用子函数,:参数是字符指针) (3) 能够将这个字符串的所有英文字符转换为对应的大写字母。(用一个 子两数,参数是字符指针) 用c++
以下是C++的代码实现:
```c++
#include <iostream>
using namespace std;
// 统计字符串长度
int strLen(char* str) {
int len = 0;
while (*str != '\0') {
len++;
str++;
}
return len;
}
// 统计数字字符个数
int countDigitChar(char* str) {
int count = 0;
while (*str != '\0') {
if (*str >= '0' && *str <= '9') {
count++;
}
str++;
}
return count;
}
// 转换为大写字母
void toUpper(char* str) {
while (*str != '\0') {
if (*str >= 'a' && *str <= 'z') {
*str -= ('a' - 'A');
}
str++;
}
}
int main() {
char str[100];
cout << "请输入一个字符串:";
cin >> str;
int len = strLen(str);
cout << "字符串长度:" << len << endl;
int count = countDigitChar(str);
cout << "数字字符个数:" << count << endl;
toUpper(str);
cout << "转换为大写字母后的字符串:" << str << endl;
return 0;
}
```
在这个程序中,我们定义了三个函数:`strLen`、`countDigitChar`、`toUpper`,分别用于统计字符串长度、统计数字字符个数、转换为大写字母。这三个函数都接受一个字符指针作为参数,用指针遍历字符串中的每一个字符进行操作。在主函数中,我们首先从键盘输入一个字符串,然后调用三个函数进行操作,并输出结果。
利用指针数组输入5个字符串,用函数进行且使用二级指针strlen进行字符串大小比较
在C语言中,你可以创建一个动态内存分配的指针数组,并利用二级指针(指向指针的指针)来存储字符串地址,同时使用`strlen()`函数计算每个字符串的长度。下面是一个简单的示例,演示如何实现这个功能:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,接收二级指针作为参数
void compare_strings(char** str_array, int num_strings) {
for (int i = 0; i < num_strings; i++) {
if (i != 0 && strlen(str_array[i]) > strlen(str_array[i - 1])) {
printf("'%s' is longer than '%s'\n", str_array[i], str_array[i - 1]);
}
}
}
int main() {
// 定义并初始化指针数组
char* str[5];
for (int i = 0; i < 5; i++) {
scanf("%s", str + i); // 输入5个字符串,使用二级指针间接访问数组元素
str[i] = (char*)malloc(strlen(str[i]) + 1); // 分配内存并复制字符串内容
}
// 比较字符串长度
compare_strings(str, 5);
// 清理内存
for (int i = 0; i < 5; i++) {
free(str[i]); // 对每一个字符串释放内存
}
return 0;
}
```
在这个例子中,用户通过`scanf()`逐个输入字符串,然后对它们的长度进行比较。注意在`main()`结束时需要手动释放之前动态分配的内存,以防止内存泄漏。
阅读全文