Если я правильно понимаю ваш вопрос, вы можете использовать класс символов :
fscanf( list_in, "%[^ \r\n\t]", keywords );
Конечно, чтобы избежать переполнения буфера, вы всегда должны устанавливать максимальную длину при чтении строкс (f) scanf, как в:
char keywords[81];
fscanf( list_in, "%80[^ \r\n\t]", keywords );
Редактировать: Если вы хотите включить завершающий пробел в строке, вы можете прочитать его отдельно в char
, используя директиву %c
, и либо обработайте ее таким образом, либо добавьте в строку:
char keywords[82], space;
int n;
fscanf( list_in, "%80[^ \r\n\t]%c", keywords, &space );
n = strlen( keywords );
keywords[n] = space;
keywords[n+1] = '\0';
(Конечно, чтобы быть особенно осторожным, вам также следует проверить возвращаемое значение fscanf
, чтобы убедиться, что вы, например, не достигли конца входного файла.)