Как читать данные из неизвестного типа ввода (filestream или stdin) C

Я хотел знать, как читать данные из неизвестного источника ввода, то есть я не знаю, собирается ли пользователь просто ввести предложение или он даст мне какой-нибудь текстовый файл. Я пытался использоватьfscanf так как я прочитал, это предназначено для неформатированного типа ввода, это мой код, я полагаю, чтобы получить некоторый тип ввода (файл или просто предложение(echo bla bla bla) а также"int" и распечатать только"int" первые слова Программу следует использовать для конвейерной передачи, то есть команда будет выглядеть так:
Есть 2 способа использования программы:

1.echo "blabla" | myprog 2  (number of words to print)
2.cat input.txt | myprog 2  (number of words to print)

Проблемная строка - строка 16, я пытался использоватьfscanf
Спасибо!

  1 #include <stdio.h>
  2 #include <ctype.h>
  3 #include <string.h>
  4 #include <stdlib.h>
  5
  6
  7 int main(int argc, char *argv[]){
  8    char *words[32];
  9    int numofwords = atoi(argv[2]);
 10    int i=0;
 11    int len;
 12    char *word = malloc (32 * sizeof(char));
 13    char c;
 14   while (i<=numofwords){
 15    if ((c = getc (argv[1])) != EOF){
 16         fscanf(argv[1],"%s",&word);
 17         len = strlen (word);
 18         words[i] = malloc ((len+1) * sizeof(char));
 19         i++
 20    }
 21    printf(words[i]);
 22   }
 23   return 0;
 24 }
 25

Ответы на вопрос(3)

Ваш ответ на вопрос