【问题标题】:C- Reading stdin and putting values in an arrayC-读取标准输入并将值放入数组
【发布时间】:2015-10-15 21:34:30
【问题描述】:

我有一个关于标准输入和将它读取的值放入数组的问题。我编写了代码,它会询问数组的大小和它想要输入的值。但是,我想知道是否有一种方法可以一起跳过这一切,只需从文本文件中读取标准输入。类似的东西

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;

【问题讨论】:

  • 所以你想从文件而不是标准输入中读取? cat file | ./MyBinary 会将cat 的输出重定向到您的二进制输入。如果你想直接从你的程序中读取文本文件,你应该了解fopen()fscanf()
  • V-&gt;item = malloc(size * sizeof(int *)); --> malloc(size * sizeof *(V-&gt;item));。当V-&gt;item[i]=y 暗示需要int 的数组时,代码似乎正在分配指针数组。
  • @chux 哇!忘记放最后 5 个了。

标签: c arrays stdin


【解决方案1】:

您想从文件或标准输入中读取?这不是一回事。

您可以将文件的内容重定向到标准输入,方法是将其放在管道上,如下所示:

cat yourfile | ./YourBinary    

如果你想直接从文件中读取,我推荐使用 open(fd, flags) 函数,它会返回一个文件描述符到你想要的文件如果您获得了所需的权利,就想打开它。 Here 是打开的手册页。

要从标准输入读取,您必须使用 read(fd, buf, buf_size) 函数,如下所示:

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

Filedescriptor 是一个整数,如果您尝试打开文件,则可以由 open(fd, flags) 函数给出,或者简单地将 0 用于标准输入, 1 代表标准输出,2 代表标准错误,如果你想阅读其中之一。

我将 1023 置于读取状态,因为您必须在缓冲区上保留一个 char 位置才能将 '\0' 放在字符串的末尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-28
    • 2018-09-04
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多