C Ответ
Преобразование fscanf s будет соответствовать последовательности символов, не являющихся пробелами. Входная строка останавливается на пустом месте (как определено isspace
) или на максимальной ширине поля, в зависимости от того, что произойдет раньше. Обратите внимание, что в предоставленном буфере должно быть достаточно места, или он может быть переполнен длинным вводом.
FILE *fp;
char cstr[128];
fp = fopen("test.txt", "r");
while (!feof(fp))
{
fscanf(fp, "%s", cstr);
...
}
Оригинальный ответ C
Функция fgets позволит вам читать в файле по одной строке за раз, но вам все равно придется проверять каждый символ с помощью isspace
.
Поскольку isspace
может включать пробел, подачу формы ('\ f'), символ новой строки ('\ n'), возврат каретки ('\ r'), горизонтальную табуляцию ('\ t') и вертикальную табуляцию ('\ v') при проверке пробелов, лучше всего читать цикл по одному символу за раз, используя функцию fgetc . Обратите внимание, что если целочисленное значение, возвращаемое fgetc () , сохраняется в переменной типа char и затем сравнивается с целочисленной константой EOF, сравнение никогда не будет успешным, поскольку расширение знака переменной типа char при расширении до целого определяется реализацией.
FILE *fp;
int c;
fp = fopen("test.txt", "r");
while ((c = fgetc(fp)) != EOF)
{
if (isspace(c))
{
...
}
else
{
...
}
}
Оригинальный ответ C ++
Метод istream :: getline позволит вам читать по одной строке за раз и при желании указывать разделитель (по умолчанию '/ n').
Так как isspace
может включать пробел, подачу формы ('\ f'), символ новой строки ('\ n'), возврат каретки ('\ r'), горизонтальную табуляцию ('\ t') и вертикальную табуляцию ('\ v') при проверке пробелов, лучше всего читать цикл по одному символу за раз, используя метод istream :: get .
char c;
string str;
ifstream file("test.txt",ios::in);
while (file.get(c))
{
if (isspace((unsigned char)c))
{
...
}
else
{
str.push_back(c);
}
file.peek();
if (file.eof())
{
break;
}
}
Примечание: проверка ошибок была исключена из всего вышеприведенного кода для простоты.