从字符串中删除一个字符的通用函数delchar();

xiaoshi935 2009-05-25 04:46:24

#include <iostream>
using namespace std;
const int N = 80;

void delchar(char *p, char x) { //删除字符串p中的字符x,这个函数是对的。
char *p1 = p;
for (; *p!='\0'; p++) {
if (*p != x)
*p1++ = *p;
*p1 = '\0';
}
}

int main () { //主函数中似乎存在一些问题?但是找不到。
char c[N], *pt;
pt = "tiankongdaxue";
pt = c;
delchar (pt,'a');
cout << c << endl;
return 0;
}

代码在上面,可是运行后就是没有结果,为什么呢?
...全文
1891 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoshi935 2009-05-25
  • 打赏
  • 举报
回复
错误已经搞明白,多谢大家,下面发个总结帖:

#include <iostream>
using namespace std;
const int N = 80;

void delchar(char *p, char x) { //删除字符串p中的字符x,这个函数是对的。
char *p1 = p;
for (; *p!='\0'; p++)
if (*p != x)
*p1++ = *p;
*p1 = '\0';
}

int main () { //第一种方法
char c[N] = "tiankongdaxue";
delchar(c,'a');
cout << c << endl;
}

/*
int main () { //第二种方法
char c[N] = "tiankongdaxue";
char *pt = c;
delchar (pt,'a');
printf("%s",c);
return 0;
}

int main () { //手动输入方法
char c[N];
char *pt = c;
gets(pt);
delchar (pt,'a');
printf("%s",c);
return 0;
}
*/

/* 我的错误
int main () {
char c[N];
char *pt = c; //pt首先指向c
pt = "tiankongdaxue"; //pt这时候已经指向另外一个字符串了
delchar (pt,'a');
printf("%s",c);
return 0;
}*/
redtearqi 2009-05-25
  • 打赏
  • 举报
回复
第一个main函数,pt指向的是c,后面用gets函数输入时,是将输入的值赋给c
第二个main函数,在第三句,pt指向了一个字符串"tiankongdaxue"而没有继续指向c
xiaoshi935 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lingyin55 的回复:]
void delchar(char *p, char x) { //删除字符串p中的字符x,这个函数是对的。
char *p1 = p;
for (; *p!='\0'; p++) {
if (*p != x)
*p1++ = *p;
//*p1 = '\0';///////////////
}
*p1 = '\0';////刚才注释后忘记加这个了。
}


引用 6 楼 xiaoshi935 的回复:
引用 5 楼 lingyin55 的回复:
C/C++ code
#include <iostream>
using namespace std;
const in…
[/Quote]
还有个问题,麻烦了!

#include <iostream>
using namespace std;
const int N = 80;

void delchar(char *p, char x) { //删除字符串p中的字符x,这个函数是对的。
char *p1 = p;
for (; *p!='\0'; p++)
if (*p != x)
*p1++ = *p;
*p1 = '\0';
}

int main () { //这一种自己输入tiankongdaxue的话可以输出结果,而且结果是对的。
char c[N];
char *pt = c;
gets(pt);
delchar (pt,'a');
printf("%s",c);
return 0;
}

int main () { //但是这一种自己定义了,为什么就不能输出结果了呢?
char c[N];
char *pt = c;
pt = "tiankongdaxue";
delchar (pt,'a');
printf("%s",c);
return 0;
}
fellatioyzx 2009-05-25
  • 打赏
  • 举报
回复
学习了
lingyin55 2009-05-25
  • 打赏
  • 举报
回复
void delchar(char *p, char x) { //删除字符串p中的字符x,这个函数是对的。
char *p1 = p;
for (; *p!='\0'; p++) {
if (*p != x)
*p1++ = *p;
//*p1 = '\0';///////////////
}
*p1 = '\0';////刚才注释后忘记加这个了。
}



[Quote=引用 6 楼 xiaoshi935 的回复:]
引用 5 楼 lingyin55 的回复:
C/C++ code
#include <iostream>
using namespace std;
const int N = 80;

void delchar(char *p, char x) { //删除字符串p中的字符x,这个函数是对的。
char *p1 = p;
for (; *p!='\0'; p++) {
if (*p != x)
*p1++ = *p;
//*p1 = '\0';///////////////
}
}

int main () { //主函数中似乎存在一些问题?但是找不到。

[/Quote]
xiaoshi935 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lingyin55 的回复:]
C/C++ code
#include <iostream>
using namespace std;
const int N = 80;

void delchar(char *p, char x) { //删除字符串p中的字符x,这个函数是对的。
char *p1 = p;
for (; *p!='\0'; p++) {
if (*p != x)
*p1++ = *p;
//*p1 = '\0';///////////////
}
}

int main () { //主函数中似乎存在一些问题?但是找不到。
char c[N] = "tiankongdaxue";//////////

[/Quote]


int main () { //主函数中似乎存在一些问题?但是找不到。
char c[N] = "tiankongdaxue";
delchar (c,'a');
for (int i = 0; i < N; i++)
cout << c[i];
return 0;
}

按照上面的代码输出的是:
t ankongdaxue
这明显错了
lingyin55 2009-05-25
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
const int N = 80;

void delchar(char *p, char x) { //删除字符串p中的字符x,这个函数是对的。
char *p1 = p;
for (; *p!='\0'; p++) {
if (*p != x)
*p1++ = *p;
//*p1 = '\0';///////////////
}
}

int main () { //主函数中似乎存在一些问题?但是找不到。
char c[N] = "tiankongdaxue";//////////
delchar (c,'a');
cout << c << endl;
return 0;
}
Qlaiaqu 2009-05-25
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
const int N = 80;

void delchar(char *p, char x) { //删除字符串p中的字符x,这个函数是对的。
char *p1 = p;
for (; *p!='\0'; p++) {
if (*p != x)
*p1++ = *p;
}
*p1 = '\0';
}

int main () { //主函数中似乎存在一些问题?但是找不到。
char c[N] = "tiankongdaxue", *pt;
pt = c;
delchar (pt,'a');
cout << c << endl;
return 0;
}
rabbitjump 2009-05-25
  • 打赏
  • 举报
回复
pt = "tiankongdaxue";
pt = c;
改为:
c = "tiankongdaxue";
pt = c;
czfnaruto 2009-05-25
  • 打赏
  • 举报
回复
char c[N]={"tiankongdaxue"};

delchar (c,'a');
goodname 2009-05-25
  • 打赏
  • 举报
回复
pt = "tiankongdaxue";
pt = c;//pt原来指向的内容丢了。

65,183

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧