C-读取stdin并将值放入数组中

时间:2015-10-15 21:34:31

标签: c arrays stdin

我有一个关于stdin的问题,并将它读取的值放入数组中。我编写了代码,它要求数组的大小和它想要输入的值。但是,我想知道是否有一种方法,如果我可以一起跳过这一切,只是从文本文件中读取stdin。像

这样的东西

5

5 5 5 5 5

所以第一行是数组的大小,第二行是数组中的值。

这就是我所拥有的:

      int size,y;

      printf("Enter size of array: ");

      scanf("%d",&size);
      V->size=size;
      V->item=malloc(size * sizeof(int *));
      printf("size of array: %d\n",V->size);

      for(int i =0 ;i < size; i++){
      printf("Enter your value: \n");
      scanf("%d", &y);
      V->item[i]=y;

1 个答案:

答案 0 :(得分:0)

你想从文件或Stdin读取?这不是一回事。

您可以将文件的内容重定向到stdin,方法是将其放在管道上,如:

cat yourfile | ./YourBinary    

OR

如果你想直接从文件中读取,我建议使用 open(fd,flags) 函数,它会将文件描述符返回给你的文件想要打开,如果你有权利它。 Here是公开的手册页。

OR

要从stdin读取,您必须使用 读取(fd,buf,buf_size) 功能,如下所示:

char buff[1024];
while(read(filedescriptor, buff, 1023) > 0)

Filedescriptor是一个整数,可以通过 open(fd,flags) 函数给出,如果你试图打开一个文件,或者只是将0添加到stdin ,1表示stdout,2表示stderr,如果你想读取其中一个。

我在读取时打了1023,因为你必须在你的缓冲区上保留一个字符串,以便将'\ 0'放在字符串的末尾。