C语言中,在主函数中输入一个字符串,然后调用编写的求字符串长度的函数(使用指针变量作形参),输出字符串的长度
时间: 2024-11-22 14:38:27 浏览: 5
写自定义函数stringLower()实现将一个字符串中所有大写字母变为小写字母。在主函数中输入一含有大写字母的字符串,调用该函数并输出改变后的字符串。
5星 · 资源好评率100%
在C语言中,你可以通过以下步骤实现这个功能:
1. 定义一个函数 `strlen_ptr`,它接受一个指向字符数组的指针作为参数,并返回该数组(即字符串)的长度。这里我们需要使用到标准库中的 `size_t` 类型来存储长度,因为字符串长度可能是无符号整数。
```c
#include <stdio.h>
#include <string.h>
size_t strlen_ptr(char* str) {
size_t len = 0;
while (*str != '\0') { // '\0' 表示字符串结束
len++;
str++; // 移动指针到下一个字符
}
return len;
}
```
2. 在主函数 `main` 中,首先声明一个字符数组来接收用户输入的字符串,然后使用 `scanf` 函数读取输入。接下来,将输入的字符串地址传递给 `strlen_ptr` 函数并打印结果。
```c
int main() {
char input[100]; // 假设最多输入99个字符
printf("请输入一个字符串:");
fgets(input, sizeof(input), stdin); // 使用 fgets 防止换行符被读入
input[strcspn(input, "\n")] = '\0'; // 去除fgets带来的换行符
size_t length = strlen_ptr(input);
printf("字符串 '%s' 的长度是 %zu\n", input, length);
return 0;
}
```
在这个例子中,我们使用 `fgets` 而不是 `scanf` 来读取字符串,因为 `fgets` 可以一次性读取包括空格在内的整个行,而 `scanf` 需要额外处理空格。
阅读全文