2015-03-20 3 views
-1

Мне нужно скопировать каждые четыре символа, прочитанные из потока файлов, в массив размером четыре. например, k [0], k [1], k [2], k [3] имеют по 4 символа.Как читать строку из n символов за раз из потока?

char k[4]; 

    for (int i=0; i<4;i++) 
    { 
     fgets(&k[i],4, keyfile); 
     printf("%c \n",k[i]);  
} 
+1

Что происходит, что квалифицируется как «не работает»? Пожалуйста, опишите вашу проблему более подробно. Более полный пример кода, который включает объявление '' ', тоже будет хорошим. –

+0

'char buf [n]; while (fread (buf, sizeof buf, 1, stdin) == 1) do_stuff (buf); ' – chux

ответ

0

fgets получает целую строку. Вместо этого используйте fgetc. В качестве альтернативы, выпрямите петлю.

+1

' scanf' и сохранение цикла также будет вариантом. –

+0

'fgets()' получает _line_ символов, а не строку, вплоть до окончательного '' \ n''. Он не прекращает чтение, если он встречает нулевой символ '' \ 0''. Когда это сделано, он добавляет нулевой символ, гарантирующий то, что было прочитано, теперь является строкой. – chux

Смежные вопросы