adaminchina @ 2018-11-07 12:41:47
int main()
{
int n,i,len;
char a[51];
scanf("%d",&n);
getchar();
gets(a);
len=strlen(a);
for(i=0;i<len;i++)
{
printf("%c",(a[i]+n-'a')%26+'a');
}
return 0;
} 这个输出是全wrong的。
int main() {
int n,i,len;
char a[51];
scanf("%d%s",&n,a);
len=strlen(a);
for(i=0;i<len;i++)
{
printf("%c",(a[i]+n-'a')%26+'a');
}
return 0;
} 但只要把中间字符的输入改成别的形式,就全AC了。 而这两行代码在本机上的测试,输出是没差别的。
求解是是什么原理。百度不到。
by Bader @ 2018-11-07 12:45:35
+1
by King_of_gamers @ 2018-11-07 12:50:11
希望更丰富的展现?使用Markdown
by wuzhaoxin @ 2018-11-07 12:51:12
gets会读到换行符,而windows和Linux的换行符不一样
by info___tion @ 2018-11-07 12:51:38
gets()不是向来就有bug的吗
你要真的想用就用fgets(...,stdin)吧,gets()bug很多
by adaminchina @ 2018-11-07 14:43:18
@wuzhaoxin
百度了一下发现两者的区别是\n和\r\n,我没有Linux系统,无法验证。
请问gets对两者的区别是什么呢?是在Linux中无法读取到换行符导致不能结束?还是其他什么原因呢?
by suyeyue @ 2018-12-02 12:14:53
同问qwq