笔主今日去笔试,第一道编程题十分简单,但编译器就是无法通过。原因就出在多行字符串的读取之上。
#include "stdafx.h"
#include<stdlib.h>
int _tmain(int argc, _TCHAR* argv[])
{
char c[20] ;
scanf_s("%d", &N);
for (int i = 0; i < N;i++)
{
scanf_s("%s", c);
}
system("pause");
return 0;
}
以上代码无法获得正确的输入,应该是由于scanf不能接受空格、制表符Tab、回车等,所以转而使用gets。
#include "stdafx.h"
#include<stdlib.h>
int _tmain(int argc, _TCHAR* argv[])
{
char c[20] ;
scanf_s("%d", &N);
getchar();
/*scanf()函数接受输入以后,回车被保存在输入流中了, 在scanf()后面加一个getchar()就好了。 这样会吃 掉多余的回车符,后面的gets()就可以接受输入了。*/
for (int i = 0; i < N;i++)
{
gets_s(c);
}
system("pause");
return 0;
}
//参考http://blog.csdn.net/svap1/article/details/42740509?locationNum=14&fps=1