删除字符串中指定字符

7-1 删除字符串中指定字母
分数 10
作者 齐心
单位 湖北汽车工业学院
请使用指针的方法编写程序,程序的功能是从键盘输入一个字符串(字符串长度小于100),删除其中的字母a后输出。例如,输入字符串abcaca,输出bcc。

输入样例:
abcaca
输出样例:
bcc
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
C (gcc)
1

稍等,人工回答,比较慢

#include <stdio.h>
#include <string.h>

int main() 
{
    char str[100];
    scanf("%s", str);
    char *p = str; 

    while (*p != '\0') 
    {
        if (*p != 'a') 
        {
            printf("%c", *p);
        }
        p++; 
    }
    return 0;
}

以下是使用指针的方法编写的C语言程序,可以实现从键盘输入一个字符串,删除其中的字母a后输出:


c
#include <stdio.h>  
#include <string.h>  
  
int main() {  
    char str[100];  
    char *p = str;  
    int len = strlen(str);  
    int i;  
  
    printf("Enter a string (less than 100 characters): ");  
    fgets(str, sizeof(str), stdin);  
  
    for (i = 0; i < len; i++) {  
        if (str[i] != 'a') {  
            *(p++) = str[i];  
        }  
    }  
  
    *(p-1) = '\0';  
  
    printf("Result: %s\n", str);  
  
    return 0;  
}

程序首先定义了一个字符数组str和一个指向字符数组的指针p。然后使用fgets()函数从标准输入中读取一个字符串,并将其存储在str中。

接下来,程序使用一个循环遍历str中的每个字符,如果当前字符不是字母a,则将其复制到指针p所指向的位置。

最后,程序将指针p所指向的字符串的末尾设置为'\0',以确保输出的字符串以空字符结尾。最后,程序使用printf()函数输出结果。

注意,在使用指针时,需要注意指针的类型和指针的位置。在本程序中,我们使用了一个字符指针p来指向字符数组str,并使用*(p++)来复制字符。

供参考:

#include <stdio.h>
int main()
{
    char s[100], c = 'a', * p = s, * q = s;
    gets(s);
    while (*p) {
        if (*p != c) *q++ = *p;
        p++;
    }
    *q = '\0';
    puts(s);
    return 0;
}

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7630896
  • 除此之外, 这篇博客: 指针总结中的 请使用指针的方法编写程序,程序的功能是从键盘输入一个字符串(字符串长度小于100),删除其中的字母a后输出。例如,输入字符串abcaca,输出bcc。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include <stdio.h>
    int main()
    {
    	char a[101],b[101],*p1=a,*p2=b;
    	gets(a);
    	for(;*p1!='\0';p1++)
    	if(*p1!='a')
    	*(p2++)=*p1;
    	*p2='\0';
    	puts(b);
    	return 0;
    	
    }
      
     
    
    • 用指针操作完数组最后输出的是数组,而不是指针,在不要顺手打错了。
    • 当符合题目要求的条件的时候,将p2的指针往后面移动,就会储存到要求的内容了。
      函数名代表该函数的入口地址。因此,可用函数名给指向函数的指针变量赋值。
      语句int *p[5]; 定义了一个指针数组p,用于指向一个有5个元素的数组。

    当指针变量指向一个包含四个元素的数组 int (*p)[4]p指向一个包含四个元素的一维数组如何进行调用

    • 一维数组
    int a[4]={1,2,3,4};
    int (*p)[4];
    p=&a;
    printf("%d\n",(*p)[3]);//p=a恒等于p=&a[0],此时指向的就是一个元素了
    
    • 二维数组
    p=a;//表示p指向二维数组的第0行
    

    调用printf函数,%s的格式输出字符串时,字符数组名、字符指针和字符串常量都可以作为输出参数。

    数组的基地址是在内存中存储数组的起始位置,数组名本身就是一个地址即指针值。

    定义一个指针数组并初始化赋值若干个字符串常量,则指针数组并不存放这些字符串,而仅仅指向各个字符串。

    指针定义后,可以指向同类型的任何变量。

    定义数组之后如果用数组输入的话就不要加地址符了,因为指针本来就指向一个地址