我有一个关于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;
答案 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'放在字符串的末尾。