从stdin读取文本(没有fopen)

时间:2017-10-25 18:42:20

标签: c stdin

我正在尝试编写一些代码来逐行读取stdin char中的文本文件,而不使用fopen。我需要42行,最多100个字符。

帮助我解决这个问题并向我解释它是如何工作的。谢谢!

int main()                                                      
{
char str[100];

fgets(str, sizeof(str), stdin);
fputs(str, stdout);
return 0;}

1 个答案:

答案 0 :(得分:0)

  

不使用fopen

如果容忍open。为什么不在read使用它?此解决方案允许您通过char读取char。

int main(void)
{
  int file_descriptor = open("./path", O_RDWR); /* Open with read/write */
  char text_block[10]; // Random size

  read(file_descriptor, text_block, 1); /* This will read 1 characters
  from the file */

  /* Then do what you want with the char readed. */
}

考虑到这个解决方案,这是一个有效的过程:

  1. 使用stat()功能了解文件大小(阅读手册)
  2. 使用与上述相同的流程,但而不是读取1个字符读取文件的大小
  3. 每行由' \ n' 分隔,最后一行。只需使用它将完全重新加载的文件分隔为行
  4. 即可

    我想这是作业...这段代码有错误并且在你找到它之前不会编译。这意味着在网上搜索手册并阅读它