Существует ли стандартная функция, которая распечатывает / контролирует содержимое файла stdin, оставляя данные внутри stdin? - PullRequest
0 голосов
/ 29 октября 2019

Существует ли более быстрая альтернатива, предоставляемая стандартными библиотеками, чтобы просто прочитать все / любой символ файла stdin, записать все символы в массив, после чего передать содержимое всего массива stdout и обратно (потому что дляэто просто "анализировать" цель) stdin отдельными шагами?

Я просто хочу проанализировать, что на самом деле находится внутри файла stdin, не извлекая из него свои данные простым способом.

Я не могу найти ни одной функции стандартных библиотек, которая делает это.


Я знаю, что это мало, но я думаю, что больше нечего сказать о том, чтоя хочу.

Вопрос для C и C ++, так как я работаю с обоими. Если ответы между этими изменениями, пожалуйста, укажите, какой язык в фокусе.

1 Ответ

2 голосов
/ 29 октября 2019

Вы можете использовать getchar для чтения char по форме char 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;
}
...