输入一个字符串,包含数字与字母,编程去除数字,要求:1.在原字符串操作 2.使用指针处理
时间: 2023-05-01 12:07:43 浏览: 64
这个问题要求输入一个包含数字和字母的字符串,并且删除其中的数字,然后使用指针处理。
回答:
首先,我们需要使用指针来遍历字符串,并且找到其中的数字字符。当我们找到一个数字字符时,我们将它删除,并将指针移动到下一个字符。如果我们找到了一个非数字字符,则我们只需将指针移动到下一个字符。
这里是一个示例代码:
#include <stdio.h>
void remove_digits(char *str) {
char *src = str, *dst = str;
while (*src) {
if (*src >= '0' && *src <= '9') {
src++;
} else {
*dst++ = *src++;
}
}
*dst = '\0';
}
int main() {
char str[] = "ab123cd45";
printf("原始字符串:%s\n", str);
remove_digits(str);
printf("去除数字后的字符串:%s\n", str);
return 0;
}
输出:
原始字符串:ab123cd45
去除数字后的字符串:abcd
相关问题
利用指针实现由键盘任意输入一串字符,将此字符串在原数组中倒置
下面是一个利用指针实现字符串倒置的示例代码:
```c
#include <stdio.h>
#include <string.h>
void reverse(char *str) {
int len = strlen(str);
char *start = str;
char *end = str + len - 1;
while (start < end) {
char temp = *start;
*start++ = *end;
*end-- = temp;
}
}
int main() {
char str[100];
printf("请输入一个字符串:");
gets(str);
reverse(str);
printf("倒置后的字符串为:%s\n", str);
return 0;
}
```
在这个代码中,`reverse` 函数接受一个指向字符数组的指针,然后使用两个指针 `start` 和 `end` 分别指向字符串的开头和结尾,不断交换两个指针所指向的字符,直到 `start` 指针超过了 `end` 指针为止,实现了字符串的倒置。`main` 函数中先读入一个字符串,然后调用 `reverse` 函数倒置字符串,并输出倒置后的结果。
用c语言:利用指针实现由键盘任意输入一串字符,将此字符串在原数组中倒置。如原字符串为: abcdefg,变换后为gfedcba。不能用字符串函数,遍历使用指针
下面是用 C 语言编写的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 100
void reverse(char *str) {
char *start = str;
char *end = str;
while (*end != '\0') {
end++;
}
end--;
while (start < end) {
char temp = *start;
*start++ = *end;
*end-- = temp;
}
}
int main() {
char str[MAXLEN];
printf("请输入字符串:");
scanf("%s", str);
reverse(str);
printf("变换后的字符串为:%s\n", str);
return 0;
}
```
在这个程序中,我们定义了一个 `reverse` 函数,用于将字符串倒置。这个函数接收一个指向字符串的指针,然后使用两个指针 `start` 和 `end` 分别指向字符串的开头和结尾。然后,我们使用一个循环来交换 `start` 和 `end` 指向的字符,直到它们相遇为止。
在主函数中,我们首先定义一个字符数组 `str`,用于存储从键盘输入的字符串。然后,我们调用 `reverse` 函数,将字符串倒置。最后,我们打印出变换后的字符串。
需要注意的是,我们在使用 `scanf` 函数读取字符串时,应该使用 `%s` 格式化字符串,而不是 `%c`。`%s` 可以一次读取整个字符串,而 `%c` 只能读取单个字符。