本题要求实现一个删除字符串中的指定字符的简单函数。
函数接口定义:
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 版权协议,转载请附上原文出处链接和本声明。