此代码适用于DEVCPP和IDEONE,但此问题的网站不接受此代码。 这是一个在线竞争,内置的编译器说:编译失败。 这是一个在str1中找到str2的程序,如果找到则返回子字符串的索引。否则打印-1。
我知道不推荐使用GOTO。 :(对不起,请原谅。无法找到解决方法。
IDEONE链接:LINK
代码是:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char s1[19], s2[19],*p,c,d,k=0;
int i;
gets(s1); gets(s2);
p = strstr(s1,s2);
if( (strlen(s2) > strlen(s1)) || !p )
{printf("-1");goto ex;}
for(i=0;i<strlen(s1); i++)
{
c = s1[i];
d = s1[i+1];
if(c == s2[k] && d == s2[k+1])
{
printf("%d", i);
goto ex;
}
}
ex:
return 0;
}
答案 0 :(得分:1)
a.c:15:14: error: comparison between signed and unsigned integer expressions
让i
无符号。
a.c:19:9: error: array subscript has type 'char'
make k
int。
注意:
使用fgets
代替gets
。
goto
在某些情况下是可以的,比如您使用的模式可用于在return
之前执行某些默认操作(例如,日志记录)。还要从内循环,跳转表使用(&amp;&amp;)中退出,在完成default:
之一后执行case x:
,在case x:
之后重试以及其他几个