我是一名在学习C语言的学生,遇到了如下的题目,我自己在devc++里是完全没有问题的。但是我把答案提交到希冀平台的时候就错了,而且0分,改了一下午,很痛苦,希望能为我指出问题,或者帮我写出来,6元真心感谢。
【问题描述】编写程序,输入一个字符串后再输入两个字符,输出此字符串中从与第1个字符匹配的位置开始到与第2个字符匹配的位置结束的所有字符。用返回字符指针的函数实现
【输入形式】
【输出形式】
【样例输入】program
r
g
【样例输出】rog
【样例说明】
【评分标准】
这个是我写的代码
#include <stdio.h>
char *fun(char *p, char begin, char end);
int main()
{
char string[100];
gets(string);
char *p, begin, end;
p =string;
scanf("%c\n", &begin);
scanf("%c", &end);
puts( fun(p, begin, end) );
return 0;
}
char *fun(char *p, char begin, char end)
{
int k = 0, m = 0;
char string[100];
char *ans;
ans = string;
int tag = 0;
while( *(p+k) != 0)
{
if(*(p+k) == begin || tag == 1)
{
*(ans+m) = *(p+k);
m++;
tag = 1;
}
if(*(p+k) == end && tag == 1)
{
break;
}
k++;
}
*(ans + m) = 0x00;
return ans;
}
运行结果及报错内容
(我在devc++是正常的,以下是希冀平台的报错)
得分0.00 最后一次提交时间:2022-06-01 20:07:39
成功编译,但有警告信息.
_05.cpp: In function 'int main()':
_05.cpp:6:2: warning: 'char* gets(char*)' is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
gets(string);
^
_05.cpp:6:13: warning: 'char* gets(char*)' is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
gets(string);
^
/tmp/cceiOxpQ.o: In function main': _05.cpp:(.text.startup+0xd): warning: the
gets' function is dangerous and should not be used.
共有测试数据:5
平均占用内存:2.353K 平均CPU时间:0.00462S 平均墙钟时间:0.00463S
错误输出:
?`?dn
期望输出:
rog
错误输出:
Р?~
期望输出:
abcdef
错误输出:
?`?x?
期望输出:
ello
我的解答思路和尝试过的方法
我怀疑是我在输入的部分有差错(又或是指针?)
scanf("%c\n", &a);
getchar();//想把\n放掉
scanf("%c", &b);
最后当然还是0分
我想要达到的结果
可以在希冀平台上成功运行得分
其实我也想知道,到底是啥问题啊
真心感谢!!