Чем заменить функцию isspace? - C (СИ)
Формулировка задачи:
Как можно заменить isspace в функции? Просто не до конца её понимаю, да и хотелось бы узнать, какие альтернативные варианты есть.
char *readword(FILE *f) //чтение одного слова из файла
{
char w[256];
char c;
char*r=NULL;
int i;
if(!feof(f))
{
do
{
fread(&c,1,1,f);
c=sym(c);
}
while(!feof(f)&&isspace((unsigned char)c));
i=0;
while(!feof(f)&&!isspace((unsigned char)c));
{
w[i]=c;
i++;
fread(&c,1,1,f);
c=sym(c);
}
w[i]=0;
r = new char(strlen(w)+1);
strcpy(r,w);
}
return r;
}Решение задачи: «Чем заменить функцию isspace?»
textual
Листинг программы
#include <string.h>
#define is_space(c) ( strchr(" \t\n", (c)) )
Объяснение кода листинга программы
- Включаем заголовочный файл string.h, который содержит стандартные функции работы со строками.
- Определяем макрос is_space, который будет выполнять функцию проверки символа на принадлежность к пробельным символам.
- Внутри макроса is_space используем функцию strchr, которая ищет первое вхождение символа в строке.
- В качестве строки, в которой будем искать, указываем
\t\n, тем самым проверяем, принадлежит ли символ пробельному символу. - Возвращаем результат работы функции strchr, т.е. найденный индекс символа или -1, если символ не найден.
- Если символ найден, то возвращаем ненулевое значение, иначе возвращаем 0 (ноль).