直接Stdin到C程序

时间:2015-03-16 14:25:44

标签: c

我有一个包含以下内容的文件。

Warrior 12, 60
Swordsman 39, 25
Orc 12, 13

包含这些文件的文件名称为specs。

我试图将此指向我的C程序。比如,规格| myprogram.c

现在提出问题,如何查看文件中的每个项目,并将其添加到数组中?

myArray = {Warrior, 12, 60, Swordsman, 39, 25, Orc, 12, 13}

2 个答案:

答案 0 :(得分:1)

你可以这样做 -

 struct spec
{
  char specname[15]; //this can be char* also. Then you have to allocate suitably
  int data1;
  int data2;
};
struct spec specarr[100];
....
..
while(not end of input)
...
 scanf("%14s%d, %d",&specarr[i].specname,&specarr[i].data1,&specarr[i].data2);

我认为这就是你想要做的。看看吧。

答案 1 :(得分:0)

您输入程序的内容显示为其标准输入,可以使用正常方式读取,在您的情况下可能是scanf。

编辑:您的数组似乎包含多种类型,这在C中很难做到 - 我的印象是您在文件中定义了每行两个属性的战斗机类,因此您可能希望定义一个结构一个带有名称字段和两个整数字段的类,什么不是,然后读取你的标准输入并填充这些结构的数组。

Edit2:阅读评论我意识到我错过了你遗失的cat。您可以说cat file | programprogram < file;两者都会使文件的内容按顺序出现在 program 的标准输入中。虽然cat解决方案更直观,但至少对于从左到右书写的人来说,<解决方案可能更快。