用C语言编写程序:定义一个字符串数组str,字符串数组的值为“fdgs345va9”,使用字符指针的方式遍历这个字符串数组,将其中的小写字母过滤出来(“fdgsva”),并保存到一个新的数组str_new中,打印新的数组str_new。
时间: 2024-02-27 22:51:19 浏览: 80
好的,下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[] = "fdgs345va9";
char str_new[10] = {0}; // 定义新的数组,初始化为0
char *p = str; // 定义指针指向字符串的首地址
int index = 0; // 用于记录新数组的下标
while (*p != '\0') {
if (islower(*p)) { // 如果是小写字母
str_new[index++] = *p; // 将其保存到新数组中
}
p++; // 指向下一个字符
}
printf("%s", str_new); // 打印新数组
return 0;
}
```
运行结果为:
```
fdgsva
```
其中,`islower(*p)` 判断指针指向的字符是否为小写字母,`str_new[index++] = *p` 将该字符保存到新数组中,并且更新新数组的下标。
相关问题
编写C语言程序,定义一个字符串数组str,字符串数组的值为“fdgs345va9”,使用字符指针的方式遍历这个字符串数组,将其中的小写字母过滤出来(“fdgsva”),并保存到一个新的数组str_new中,打印新的数组str_new。
好的,以下是您要求的C语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN] = "fdgs345va9";
char str_new[MAX_LEN];
int j = 0;
for (int i = 0; i < strlen(str); i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
str_new[j++] = str[i];
}
}
str_new[j] = '\0';
printf("原字符串为:%s\n", str);
printf("新字符串为:%s\n", str_new);
return 0;
}
```
程序解释:
1. 定义了一个字符串数组 `str`,并赋值为 `"fdgs345va9"`。
2. 定义了一个新的字符串数组 `str_new`,用于保存过滤出来的小写字母。
3. 定义了一个变量 `j`,用于记录新数组中下一个要插入字符的位置。
4. 使用 `for` 循环遍历字符串数组 `str` 中的每一个字符。
5. 判断当前字符是否为小写字母,如果是,则将其插入到新数组 `str_new` 中。
6. 最后,将新数组的末尾位置设置为字符串结束符 `'\0'`,并打印出原字符串和新字符串。
7. 返回0表示程序正常结束。
用C语言定义一个字符串数组str,字符串数组的值为“fdgs345va9”,使用字符指针的方式遍历这个字符串数组,将其中的小写字母过滤出来(“fdgsva”),并保存到一个新的数组str_new中,打印新的数组str_new。
好的,以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[] = "fdgs345va9";
char str_new[10]; // 新数组的长度为小写字母的个数加1(用来存放'\0')
int j = 0; // 新数组的下标
for (int i = 0; i < strlen(str); i++) {
if (islower(str[i])) { // 判断是否为小写字母
str_new[j++] = str[i]; // 存入新数组并移动下标
}
}
str_new[j] = '\0'; // 新数组最后一个元素为'\0'
printf("%s\n", str_new);
return 0;
}
```
输出结果为:fdgsva
阅读全文