C - 直接来自终端的scanf值

时间:2015-02-06 09:36:51

标签: c linux terminal output

我有一个等待scanf()输入的c进程。

我想将其结果保存到*.txt文件。 到终端(linux)

./process > out.txt

预先在scanf中写入终端的方式是什么?

感谢。

4 个答案:

答案 0 :(得分:3)

对于以下程序,您可以输入为。

#include <stdio.h>
int main ()                                      
{
    int i = 0;                                       
    scanf("%d", &i);
    printf("Value of i = %d\n", i);
    return 0;
}

$ gcc -o exe file.c
$ echo 2 | ./exe
Value of i = 2

|pipeline将两个命令连接在一起,以便一个程序的输出成为下一个程序的输入

更新:
如果你想一起阅读字符串,字符串和整数

int i = 0;
char str[20];                            
scanf("%d%s", &i, str);                         
printf("Value of i = %d\nValue of str = %s\n", i, str);  

$ echo "45 John" | ./exe   # Ensure your input sequence is correct #
Value of i = 45
Value of str = John

用于将输出保存到文件output.txt

$ echo "45 John" | ./exe  > output.txt
$ cat output.txt 
Value of i = 45
Value of str = John

答案 1 :(得分:2)

您可以提供如下输入。

一个是管道,

 cat filename | ./process > sample.txt

否则你可以像这样给出

 ./process < filename > sample.txt

否则

 echo "1" | ./process > sample.txt

在该文件中,您只能放置整数值,并给出这样的结果。

答案 2 :(得分:0)

这样做的一种方法是将scanf()输入写入文本文件。您的输入文本文件应根据scanf()顺序正确格式化。然后将输入文本文件重定向到程序二进制文件,并将程序二进制文件的shell输出重定向到输出文件。

使用以下命令执行二进制文件。

./main < input.txt  > output.txt

例如:

如果你的main.c看起来如下

scanf("%s\n", &my_string);
scanf("%d\n", &my_int);

然后你应该准备一个input.txt,如下所示

Hello
31

答案 3 :(得分:0)

#include <stdio.h>
int main ()                                      
{
    int i = 0;                                       
    printf("Enter value of i:");
    scanf("%d", &i);
    printf("Value of i = %d\n", i);
    return 0;
}

如果我想给出i的动态输入值。怎么给?

在下面的代码中,静态值由echo提供。

$ gcc -o exe file.c
$ echo 2 | ./exe
Value of i = 2

它应该在文件中显示printf语句,并且从该文件中我应该能够输入而不是终端。