вообще-то с переводом думаю все в порядке
речь наверняка идет именно о файле и именно о вводе
прежде чем изучать Си рекомендую разобраться с основами операционной системы. здесь все представленно как файлы. память - файл, диск файл, каждый раздел на диске - файл, последовательный порт - файл, даже файл в файловой системе тоже файл О_о (совсем офигели, да?).
Потом разобраться с потоками (файлами) вводы/вывода. Понять что такое стандарный ввод/вывод. Понять как этим пользоваться из командной строки.
Потом можно пробовать писать программы на Си. Понимая что когда ты делаешь
scanf(...) на самом деле вызывается fscanf(stdin, ...) и что на самом деле программа будет читать от туда от куда ей скажешь из командной строки. скажешь ./a.out < /dev/zerro будет читать нули, скажешь ps ax | ./a.out получит на вход список процессов, скажешь ./a.out </dev/sda будет читать всеь твой диск до посинения, скажешь wget -O-
www.google.ru | ./a.out программа прочитает HTML заглавной гугловской странички. Волшебство? а программа одна и таже. ни байта не поменяли ни чего не перекомпилировали. Совсем забыл, чтобы программа читала файл лежащий рядом с ней надо написать ./a.out < input.txt, соответственно файл должен называться input.txt. Ну ты уже понял. Дальнейшее изучение подобных выкрутасов по документации shell.
Снова к программе. Уже понятно что, как и от куда будет читать программа.
В стандартной бибулиотеки Си есть много функий, хороших и разных, на любой вкус и цвет. Читают они тоже по разному. Какие-то читают из стандартного ввода, какие-то из переданного дискриптора, кто-то вообще погоду на марсе выдают (это по началу так казаться будет).
getch() читает char из стандартного ввода
fgetch(FILE*) читает тот же char из переданного дискриптора
scanf() читает что и как скажешь из стандартного ввода
fscanf() то же самое только из переданного дискриптора
Понял что делать с приставочкой?
Теперь программака для тренировки
#include <stdio.h>
#include <ctype.h> /* этот заголовок необходим для функции isspace смотри ниже */
int main()
{
int ch;
unsigned int words = 0;
int in_word = 0;
while ( (ch = getchar()) != EOF ) {
if ( !isspace(ch) ) { /* http://www.cplusplus.com/reference/clibrary/cctype/isspace/ */
if (!in_word) {
in_word = 1;
words += 1;
}
} else {
in_word = 0;
}
}
printf("%d\n", words);
return 0;
}