定义一个字符指针变量,输入一串字符,统计字符串的个数
时间: 2024-02-25 08:56:08 浏览: 74
好的,下面是 C 语言的代码实现:
```c
#include <stdio.h>
int main() {
char *str;
int count = 0;
printf("请输入一串字符: ");
scanf("%s", str);
while (*str != '\0') {
count++;
str++;
}
printf("字符串的个数为: %d\n", count);
return 0;
}
```
这段代码中,首先定义了一个字符指针变量 `str`,然后通过 `scanf` 函数从用户输入中获取一串字符并存储到 `str` 中。接着,通过一个 `while` 循环来遍历这个字符串,每遍历一个字符就将 `count` 加 1。最后输出统计结果。
需要注意的是,在使用字符指针变量时,需要确保指针指向的内存空间是有效的,否则会导致程序崩溃。在上面的代码中,我们并没有为 `str` 分配内存空间,这是一个错误的做法。正确的方法是在定义 `str` 变量时,同时为它分配足够的内存空间,例如:
```c
char str[100]; // 定义一个长度为 100 的字符数组作为字符串存储空间
char *p = str; // 将字符数组的首地址赋值给指针变量
```
这样就可以安全地使用指针变量 `p` 来操作字符数组 `str` 了。
相关问题
编写函数:实现输入一个字符串,只保留字符串中的字母字符,并统计新生成字符串中包含字母的个数。函数接口如下。 例如:主程序中输入字符串“My12C!$”,新生成的字符串为“MyC”。 函数接口定义: 在这里描述函数接口。例如: int Delotherchar (char *p); 形参指针变量指向字符数组。 说明:主程序中输入字符串,调用该函数后,输出新的字符串以及长度。函数中没有任何输入和输出。
函数接口如下:
```c
int Delotherchar(char *p);
```
其中,形参指针变量 `p` 指向要处理的字符串。
函数的功能是将字符串中的非字母字符删除,并统计新生成字符串中包含字母的个数。函数返回值为新生成字符串中包含字母的个数。
函数的实现如下:
```c
int Delotherchar(char *p) {
int count = 0; // 统计新生成字符串中包含字母的个数
char *q = p; // 定义指针变量 q,指向原字符串 p
while (*q != '\0') {
if ((*q >= 'a' && *q <= 'z') || (*q >= 'A' && *q <= 'Z')) {
*p++ = *q; // 只保留字母字符
count++; // 统计字母的个数
}
q++; // 指针 q 向后移动
}
*p = '\0'; // 新字符串的结尾加上 '\0'
return count;
}
```
在主程序中,可以这样调用该函数:
```c
#include <stdio.h>
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int count = Delotherchar(str);
printf("新字符串为:%s\n", str);
printf("新字符串中包含字母的个数为:%d\n", count);
return 0;
}
```
c++用指针编写程序,当从键盘输入一个字符串后要求: (1)统计这个字符串的长度(用子函数,参数是字符指针,不能用strlen) (2)统计这个字符串中数字字符的个数(用子函数, 参数是字符指针) (3)能够将这个字符串的所有英文字符转换为对应的大写字母。(用一个子函数, 参数是字符指针)
以下是一个采用指针编程的 C++ 程序,可以完成上述要求:
```c++
#include <iostream>
#include <cctype>
using namespace std;
// 统计字符串长度的子函数
int strLength(char *str) {
int len = 0;
while (*str++) {
len++;
}
return len;
}
// 统计数字字符个数的子函数
int countDigits(char *str) {
int count = 0;
while (*str) {
if (isdigit(*str)) {
count++;
}
str++;
}
return count;
}
// 将英文字符转换为大写字母的子函数
void toUpper(char *str) {
while (*str) {
*str = toupper(*str);
str++;
}
}
int main() {
char str[100];
cout << "Enter a string: ";
cin.getline(str, 100);
// 统计字符串长度
int len = strLength(str);
cout << "Length of string: " << len << endl;
// 统计数字字符个数
int count = countDigits(str);
cout << "Number of digits: " << count << endl;
// 转换英文字符为大写字母
toUpper(str);
cout << "Uppercase string: " << str << endl;
return 0;
}
```
在这个程序中,我们首先定义了一个名为 `str` 的字符数组,并使用 `cin.getline()` 函数从用户输入中读取字符串。然后,我们定义了三个子函数来实现字符串长度、数字字符个数和英文字符转换的功能。在 `main()` 函数中,我们调用这三个子函数,并输出相应的结果。
其中,`strLength()` 函数使用一个指针变量来遍历字符串,并计算字符串的长度。`countDigits()` 函数也使用一个指针变量来遍历字符串,并使用 `isdigit()` 函数来判断当前字符是否为数字字符。`toUpper()` 函数同样使用一个指针变量来遍历字符串,并使用 `toupper()` 函数将英文字符转换为大写字母。
程序的输出为:
```
Enter a string: Abc123def456
Length of string: 12
Number of digits: 6
Uppercase string: ABC123DEF456
```
需要注意的是,我们在子函数中都使用了指针变量来遍历字符串,并使用指针操作符 `*` 来访问当前字符。指针变量的移动可以使用 `++` 或 `--` 运算符,也可以使用指针加上或减去一个整数值来实现。
阅读全文