C语言怎么输入两个字符串(在同一行以空格间隔)并以EOF结束?

Wayne_code 2017-01-17 03:26:08
空格间隔不是只能scanf(“%s %s”,s1,s2)?

代码如下:

#include<stdio.h>
#include<string.h>
int decrypt(char *s1,char *s2)
{
int i,j,n=0,p=0,flag=0;char s3[1000];
for(i=0;s1[i];i++)
{
for(j=p;s2[j];j++)
{
if(s1[i]==s2[j])
{
s3[n]=s1[i];
n++;
p=j+1;

if(strcmp(s1,s3)==0||n==strlen(s1))
{
flag=1;return flag;
}
else break;
}
}
if(n==0) return flag;
}

return flag;
}

int main()
{
char s1[1000]={'\0'},s2[1000]={'\0'},r=0;
while(scanf("%s %s",s1,s2)!=EOF) /*这里*/
{
r=decrypt(s1,s2);
if(r) printf("Yes\n");
else printf("No\n");
}


return 0;
}

...全文
1269 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wayne_code 2017-01-18
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
引用 2 楼 Wayne_code 的回复:
[quote=引用 1楼赵4老师 的回复:]
 while(scanf("%999s%999s",s1,s2)!=2)
请问为啥这样??原题是输入EOF结束,不过我没太懂,一会儿把题贴上来,是道acm题
我1楼搞错了,应该是:
while(scanf("%999s%999s",s1,s2)!=EOF)
输入比如 abc def 123 456 然后 Linux:Ctrl+D Windows:Enter,Ctrl+Z,Enter[/quote] 谢谢!!!!
赵4老师 2017-01-17
  • 打赏
  • 举报
回复
引用 2 楼 Wayne_code 的回复:
引用 1楼赵4老师 的回复:
 while(scanf("%999s%999s",s1,s2)!=2)
请问为啥这样??原题是输入EOF结束,不过我没太懂,一会儿把题贴上来,是道acm题
我1楼搞错了,应该是:
while(scanf("%999s%999s",s1,s2)!=EOF)
输入比如 abc def 123 456 然后 Linux:Ctrl+D Windows:Enter,Ctrl+Z,Enter
Wayne_code 2017-01-17
  • 打赏
  • 举报
回复
引用 1楼赵4老师 的回复:
 while(scanf("%999s%999s",s1,s2)!=2)
请问为啥这样??原题是输入EOF结束,不过我没太懂,一会儿把题贴上来,是道acm题
赵4老师 2017-01-17
  • 打赏
  • 举报
回复
 while(scanf("%999s%999s",s1,s2)!=2)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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