我是一名在学习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分
可以在希冀平台上成功运行得分
其实我也想知道,到底是啥问题啊
真心感谢!!
#include <stdio.h>
char *fun(char *p, char begin, char end)
{
char *str;
for (; *p != begin; p++);
str=p;
for (; *str != end; str++);
*(str + 1) = 0;
return p;
}
int main()
{
char string[100];
char begin, end;
char *p = string;
fgets(string, 100, stdin);
scanf("\n%c", &begin);
scanf("\n%c", &end);
puts(fun(p, begin, end));
return 0;
}
我在dev-c++上测试,你的代码不论输什么字串,都返回空
代码第14行,改为: printf("%s", fun(p, begin, end) ); 就正常了。