Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过输入重定向读取输入后如何将scanf输入切换到标准终端输入_C_Io_Scanf - Fatal编程技术网

通过输入重定向读取输入后如何将scanf输入切换到标准终端输入

通过输入重定向读取输入后如何将scanf输入切换到标准终端输入,c,io,scanf,C,Io,Scanf,我需要让我的程序从.txt文件中读取几个单词,并使用scanf()函数将它们存储到数组中。然而,我需要接受用户输入之后,也使用scanf。如何确保scanf仅在读取所有单词后才接受用户输入 我曾尝试使用scanf()和getchar()在文件末尾接受空格,以防scanf在需要用户输入时读取到空格 char w[15][100]; for(int i =0;i<15;i++) { if(scanf("%s", &w[i][0])=1) { scanf

我需要让我的程序从.txt文件中读取几个单词,并使用scanf()函数将它们存储到数组中。然而,我需要接受用户输入之后,也使用scanf。如何确保scanf仅在读取所有单词后才接受用户输入

我曾尝试使用scanf()和getchar()在文件末尾接受空格,以防scanf在需要用户输入时读取到空格

char w[15][100];
for(int i =0;i<15;i++)
{

    if(scanf("%s", &w[i][0])=1)
    {
        scanf("%s", &w[i][0]);
    }
    getchar();
    printf("Word read\n");
}
 bool validAnswer2=false;
    while(validAnswer2==false) 
    {
        printf("Would you like to play again?\nType \"y\" to play again or \"n\" to exit: ");
        scanf(" %c", &reply);
        getchar();
        if(reply=='y')
        {
            validAnswer2=true;
        }
        else if(reply=='n')
        {
            validAnswer2=true;

        }

    }
charw[15][100];

对于(int i=0;iAs询问,该问题没有答案。程序通常不会重定向运行该程序的自己的输入环境(例如命令shell),而您的程序对此没有控制权。相反,请编写读取函数,以便它使用
fscanf()
从提供的文件中读取。然后设置一个驱动程序,在命令行参数上循环,并按顺序打开/读取/关闭每个参数。您需要做的就是定义一些特殊字符串(例如,
“-”
),如果在命令行上提供,则表示
stdin
。如果(scanf(%s),&w[i][0])=1,您希望
{scanf(“%s”和&w[i][0]);}
要工作吗?在第一次调用
scanf
后,您要读取的字符已经在
w[i][0]
中,当您第二次调用
scanf
时,您正在用下一个字符覆盖该字符。另外,您是否看到
%s”
&w[i][0]之间的转换不匹配
?关于这一点的一个不错的演练是,您可以从不同的文件*读取单词,并从stdin读取其他输入。为什么要执行两次scanf?通过编写
如果(scanf(…,&addr)==1)scanf(…,&addr)
,您将跳过其他每一次输入(例如,第二次scanf将覆盖第一次读取的数据)。