习题8-6 删除字符 (20分)

  • Post author:
  • Post category:其他


本题要求实现一个删除字符串中的指定字符的简单函数。


函数接口定义:

void delchar( char *str, char c );


裁判测试程序样例:

#include <stdio.h>
#define MAXN 20

void delchar( char *str, char c );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */

int main()
{
    char str[MAXN], c;

    scanf("%c\n", &c);
    ReadString(str);
    delchar(str, c);
    printf("%s\n", str);

    return 0;
}

/* 你的代码将被嵌在这里 */

参考别人的方法,用j构建字符串,i筛选出合适的字符

void delchar( char *str, char c){
  int  i,j;
  i=0;j=0;
  while(str[i]!='\0'){
    if(str[i]!=c){ //当不用删除时,相当于重新写str字符串,而有删除时,则使i略过这个到下一个,j直接接到下一个
      str[j]=str[i];
      j++;
    }
    i++;
    
  }
  str[j]='\0';//最后补上结尾
}

这个是我写的,用了两重循环,不知道哪里错了。。

#include <string.h>
void delchar( char *str, char c ){
	int i, j; int n = strlen(str);
	for(i = 0; i < n+1; i++){
		if(str[i]==c){//如果相等了,则从i开始每一个前移,包括'\0'
			for(j=i+1; j < n+1; j++)
				str[j-1] = str[j];
		}
	}
}



古人云 人贵有自知之明,我可能真的不适合学这个,简单的还可以,但是最主要的是眼睛受不了,本来就高度近视了,这么用眼真的不行。行路难,多歧路,今安在?

学生物使我看不到方向,学cs有路却路途坎坷,我太南了。。。



版权声明:本文为Sophiejing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。