用C语言和指针实现从键盘输入一串字符,再输入一个字符,从字符串中删除这个输入的的字符
时间: 2024-05-12 13:18:21 浏览: 91
好的,您的问题是:如何用C语言和指针实现从键盘输入一串字符,再输入一个字符,从字符串中删除这个输入的字符。下面是一个简单的实现:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[100], ch, *p;
int len, i;
printf("请输入一个字符串: ");
gets(str);
printf("请输入要删除的字符: ");
ch = getchar();
len = strlen(str);
p = str;
for (i = 0; i < len; i++) {
if (*p == ch) {
memmove(p, p + 1, len - i);
len--;
p--;
}
p++;
}
printf("删除后的字符串为: %s\n", str);
return 0;
}
```
这个程序的思路是,先从键盘输入一串字符,然后再输入要删除的字符。接着,使用指针遍历字符串,如果遇到要删除的字符,就使用 memmove() 函数将其后面的所有字符向前移动一个位置。这样就实现了从字符串中删除输入的字符的功能。最后,打印删除后的字符串。
注意:由于使用了 gets() 函数,所以输入的字符串长度不能超过数组大小。在实际应用中,建议使用 fgets() 函数来更安全地读取字符串。
相关问题
用C语言和指针和while实现从键盘输入一串字符,再输入一个字符,从字符串中删除这个输入的的字符
好的,让我来为您解答这个问题。首先,我们可以使用C语言编写一个函数来从字符串中删除一个字符。下面是一个基本的函数示例:
```c
void delete_char(char *str, char c) {
char *p = str;
while (*str != '\0') {
if (*str != c) {
*p++ = *str;
}
++str;
}
*p = '\0';
}
```
这个函数使用了一个指针p来保存当前位置,循环遍历整个字符串。如果当前字符不等于要删除的字符,则将它复制到指针p指向的位置,并将指针p向前移动。如果当前字符等于要删除的字符,则跳过它。最后,我们在字符串的末尾添加一个null字符以表示结束。
在主函数中,我们可以使用scanf函数从键盘读取输入字符串和要删除的字符,然后调用上面编写的函数来删除字符。下面是一个示例代码:
```c
#include <stdio.h>
void delete_char(char *str, char c);
int main() {
char str[100], c;
printf("请输入一串字符:");
scanf("%s", str);
printf("请输入要删除的字符:");
scanf(" %c", &c);
delete_char(str, c);
printf("删除后的字符串为:%s\n", str);
return 0;
}
void delete_char(char *str, char c) {
char *p = str;
while (*str != '\0') {
if (*str != c) {
*p++ = *str;
}
++str;
}
*p = '\0';
}
```
这个程序可以实现从键盘输入一串字符,再输入一个字符,从字符串中删除这个输入的字符。希望能够帮助到您!
用C语言和指针和while循环语句实现从键盘输入一串字符,再输入一个字符,从字符串中删除这个输入的的字符
好的,我明白了。下面是用 C 语言和指针和 while 循环语句实现从键盘输入一串字符,再输入一个字符,从字符串中删除这个输入的的字符的代码:
```c
#include <stdio.h>
void deleteChar(char *str, char c) { // 定义一个函数,用于删除字符
char *p = str; // 定义一个指针 p,初始指向 str
while (*str != '\0') { // 判断字符串是否结束,若结束则退出循环
if (*str != c) { // 如果当前字符不是要删除的字符 c,则将它复制到指针 p 所指向的位置,并将指针 p 向后移动一位
*p = *str;
p++;
}
str++; // 指针 str 向后移动一位
}
*p = '\0'; // 在字符串结尾添加一个空字符,表示字符串结束
}
int main() {
char str[100], c;
printf("请输入一串字符:");
scanf("%s", str); // 从键盘输入一串字符
printf("请输入要删除的字符:");
scanf(" %c", &c); // 从键盘输入要删除的字符
deleteChar(str, c); // 调用删除字符的函数
printf("删除后的字符串为:%s\n", str);
return 0;
}
```
如果要删除的字符在字符串中出现多次,上面的代码只会删除第一个出现的字符。如果要删除所有出现的字符,可以把 if 语句改成 while 语句:
```c
void deleteChar(char *str, char c) {
char *p = str;
while (*str != '\0') {
if (*str != c) {
*p = *str;
p++;
}
str++;
}
*p = '\0';
}
```
这样,程序就会在字符串中删除所有出现的要删除的字符。
阅读全文