C语言读入字符串时的问题

P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here

@[M0XU](/user/1178500) 放个代码?gets 自 C++14 起被废除了。
by xiaoshumiao @ 2024-01-11 10:27:08


@[xiaoshumiao](/user/1008513) ```c //这是第一次的 #include <stdio.h> int main(){ char name1[7]; char name2[7]; gets(name1); gets(name2); int a=1,b=1; int i; for(i=0;name1[i]!='\0';i++){ a*=name1[i]-'A'+1; } for(i=0;name2[i]!='\0';i++){ b*=name2[i]-'A'+1; } if(a%47==b%47){ printf("GO"); }else{ printf("STAY"); } return 0; } ```
by M0XU @ 2024-01-11 10:56:05


@[M0XU](/user/1178500) 奇怪的是,我本地测,IDE 测你 #1 都是对的,但提交就是过不了。`gets` 本身可能会造成编译器泄露,以后还是不用了吧。可以换 `fgets`。
by xiaoshumiao @ 2024-01-11 10:57:53


@[M0XU](/user/1178500) 不要使用 gets 等读取一行,因为这些函数使用换行符来判断行结束(当然也不要手动判断换行符)。Windows 下换行符是 \r\n,而 Linux 下换行符是 \n。假设此题的数据是在 Windows 下生成的,那么他的换行符是 \r\n,而 Luogu 上的程序是在 Linux 下编译的,读取的换行符是 \n,这样就错了。
by justalearner @ 2024-01-11 12:06:11


@[M0XU](/user/1178500) gets会出bug,用getchar或者getinline
by liverxiwo @ 2024-01-11 12:35:15


@[xiaoshumiao](/user/1008513) 好的谢谢!
by M0XU @ 2024-01-11 16:58:28


@[justalearner](/user/774330) 好的谢谢!
by M0XU @ 2024-01-11 16:58:56


@[liverxiwo](/user/1162380) 好的谢谢!
by M0XU @ 2024-01-11 16:59:20


|