【问题标题】:Is there a standard-function which prints out/monitor the content of the stdin file while leaving the data inside stdin?是否有一个标准功能可以打印/监视标准输入文件的内容,同时将数据留在标准输入中?
【发布时间】:2019-10-29 11:46:21
【问题描述】:

标准库是否提供了更快的替代方案来读取 stdin 文件的所有内容/任何字符,将所有字符写入数组,然后将整个数组内容提供给 stdout 并返回(因为其仅仅是“分析”目的)到stdin 在单独的步骤中?

我只是想分析一下,stdin 文件中的实际内容,而不是从其中获取数据,以一种简单的方式。

我找不到标准库的任何功能,它可以做到这一点。


我知道这很少,但我认为对于我想要的没有什么可说的了。

问题适用于 C 和 C++,因为我同时使用这两种语言。如果这些之间的答案发生变化,请说明重点关注哪种语言。

【问题讨论】:

  • int ch; for (;;) { ch = getchar(); if (ch == EOF) break; putchar(ch); }
  • 在我之前的评论中,在breakputchar() 之间添加/* analyse ch */
  • “我只想分析,stdin 文件中的实际内容是什么。”意思是?这是否意味着您希望程序分析流的内容?或者这是否意味着您只是希望程序将标准输入复制到标准,因为,从字面上看,是要查看标准输出并对其进行分析?
  • @EricPostpischil 只是为了分析stdin的包含字符。我不知道是否有其他方法可以将包含的字符输出到终端,而不是使用stdout 流。
  • C 具有一次读取一个字符和一次读取多个字符的功能。 C 具有一次写入一个字符和一次写入多个字符的功能。程序可以一次检查和处理这些字符,也可以将它们存储在数组中并以任意方式处理它们。在 C 中,你想要的任何东西似乎都是完全可能的。但是,你想要什么根本不清楚。以任何想要的方式阅读、写入、存储或分析似乎都没有任何障碍,那么是什么阻碍了您?

标签: c++ c io stdout stdin


【解决方案1】:

您可以使用getchar 逐字符读取stdin。但是,在很多情况下,使用缓冲区(例如字符数组)会更快。

#include <stdio.h>
#include <stdlib.h>

int main(void) 
{ 
    int ch;
    while ((ch=getchar()) != EOF)   /* read/print "abcde" from stdin */
          printf("%c", ch);

    /* Test reason for reaching EOF. */
    if (feof(stdin))          /* if failure caused by end-of-file condition */
       puts("End of file reached");
    else if (ferror(stdin))   /* if failure caused by some other error      */
         {
            perror("getchar()");
            fprintf(stderr,"getchar() failed in file %s at line # %d\n", __FILE__,__LINE__-9);
            exit(EXIT_FAILURE);
         }

    return EXIT_SUCCESS;
}

【讨论】:

    猜你喜欢
    • 2015-12-25
    • 2013-11-11
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 2013-09-18
    • 2017-01-19
    • 1970-01-01
    • 2017-01-19
    相关资源
    最近更新 更多