C控制台读取多行字符串

笔主今日去笔试,第一道编程题十分简单,但编译器就是无法通过。原因就出在多行字符串的读取之上。

#include "stdafx.h"
#include
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
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

你可能感兴趣的:(C控制台读取多行字符串)