题目如下:编写函数fresh(char *novel, char *out),它的功能是删除out所指向的字符串中的小写字母,并将所得到的新串存入novel中。现在不报错了,但是依旧没有东西输出来,是因为out指针没有移动吗?我明明定义了out++
#include <stdio.h>
void fresh(char *novel,char *out);
int main()
{char ls[30],haha[30];
gets(ls);
fresh(ls,haha);
puts(haha);
return 0;
}
void fresh(char *novel,char *out)
{if((*out)++<'a'||(*out)++>'z')
{*novel=*out;
novel++;
}
}
你题目中的最新代码问题如下:
1、没有循环
2、多次out++,但实际都应该操作同一个
3、ls和haha参数传反了
4、gets() 函数存在安全性问题,已被弃用,建议使用 fgets()
我修改了一下:
#include <stdio.h>
void fresh(char *novel,char *out);
int main()
{
char ls[30],haha[30];
fgets(ls,sizeof(ls),stdin);
fresh(haha,ls);
puts(haha);
return 0;
}
void fresh(char *novel,char *out)
{
while (*out != '\0')
{
if(*out<'a'||*out>'z')
{
*novel=*out;
novel++;
}
out++;
}
*novel='\0';
}