新生求问

lightinaugust 2019-02-02 01:50:12
编写函数squeeze(s1,s2),功能是这样的,只要在字符串S2中出现了的字符,都把他从字符串s1中删除。一开始写出来不对,后来改了下好了,但是不对的那个,我又找不出哪里错了???求解答,错在哪了??

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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//这个是函数
void squeeze(char s1[],char s2[]){
int i,j,m;
for(i=j=0;s1[i]!='\0';i++){
for(m=0;s2[m]!='\0'&&s1[i]!=s2[m];m++)
;
if(s2[m]=='\0'){
s1[j++]=s1[i];
}
}
s1[j]='\0';
}
//下面这一段是正确的
int main(int argc, char *argv[]) {
char s1[100],s2[100];
gets(s1);
while(gets(s2)){
squeeze(s1,s2);
puts(s1);
}
return 0;
}
/*为什么下面这个是错误的???
int main(int argc, char *argv[]) {
char s1[100],s2[100];
while(gets(s1))
;
while(gets(s2)){
squeeze(s1,s2);
}
return 0;
}*/
...全文
106 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lightinaugust 2020-02-27
  • 打赏
  • 举报
回复
引用 2 楼 636f6c696e 的回复:
学习下怎么加调试信息吧,不然有的是苦吃
谢谢
lightinaugust 2020-02-27
  • 打赏
  • 举报
回复
引用 1 楼 独孤过 的回复:
gets函数读入成功,返回与参数buffer相同的指针
读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针

上述错误代码是一直循环执行gets(s1)

另外,在2011年12月,ANSI采纳ISO/IEC 9899:2011标准,弃用gets函数
可以使用fgets代替,不过fgets会保留Enter键产生的字符至内存缓冲区,在Windows系统会多一个'\n',需要手动去除,用法如下:

fgets(s1, 100, stdin);
s1[strlen(s1) - 1] = '\0';
谢谢
636f6c696e 2019-02-03
  • 打赏
  • 举报
回复
学习下怎么加调试信息吧,不然有的是苦吃
独孤过 2019-02-02
  • 打赏
  • 举报
回复
gets函数读入成功,返回与参数buffer相同的指针 读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针 上述错误代码是一直循环执行gets(s1) 另外,在2011年12月,ANSI采纳ISO/IEC 9899:2011标准,弃用gets函数 可以使用fgets代替,不过fgets会保留Enter键产生的字符至内存缓冲区,在Windows系统会多一个'\n',需要手动去除,用法如下:

fgets(s1, 100, stdin);
s1[strlen(s1) - 1] = '\0';

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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