【问题标题】:Standard Input for C program using Unix Command Line使用 Unix 命令行的 C 程序的标准输入
【发布时间】:2013-09-19 23:16:35
【问题描述】:

我在 C 中有以下代码部分:

int main(int argc, char *argv[]) 
{
    char *input;
    int lines;
    int p;


    input = (char*)malloc(10);
    input = argv[0];
    for(p=0;p<10;p++)
    {
        printf("%c",input[p]);
    }

在我的 Unix 系统上,我进行以下调用:

./program_name.exe < inputfile

其中inputfile 是一个包含以下内容的文件:000000010Z

我收到的前面命令的输出是:

./program_

我错过了什么?

【问题讨论】:

  • 如果目标是阅读标准输入,您可能需要阅读有关 getc()、fgets() 或 scanf() 的内容。
  • malloc 没用,您没有使用分配的缓冲区,
  • argv[0] 是程序名称。 argv[1] 是第一个命令行参数。如果您将文件重定向到标准输入,您需要在程序中将标准输入作为文件打开并从中读取(fopen、fgets、fclose)或读取将返回相同内容的 ketstrokes(getchar、gets)。
  • 您似乎缺少“name.exe”。尝试循环到 18 而不是 10!

标签: c unix stdin


【解决方案1】:

argv[0] 保存正在执行的程序的名称。这是您打印的唯一内容。

您要做的是从您的文件中读取,因为它是标准输入。但你仍然必须阅读它。使用 getchar() 或任何其他读取输入的函数。

【讨论】:

  • 是的,就是这样。感谢您的帮助!
猜你喜欢
  • 2010-09-13
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多