Как проверить, является ли символ символом новой строки в любой кодировке в C?Проверка символа на новую строку
У меня есть задача написать собственный wc программа. И если я использую только, если (s[i] == '\n')
имеет другой ответ, чем оригинал wc если я позвоню ему.
Вот код:
typedef struct
{
int newline;
int word;
int byte;
} info;
info count(int descr)
{
info kol;
kol.newline = 0;
kol.word = 0;
kol.byte = 0;
int len = 512;
char s[512];
int n;
errno = 0;
int flag1 = 1;
int flag2 = 1;
while(n = read(descr, s, len))
{
if(n == -1)
error("Error while reading.", errno);
errno = 0;
kol.byte+=n;
for(int i=0; i<n; i++)
{
if(flag1)
{
kol.newline++;
flag1 = 0;
}
if(isblank(s[i]) || s[i] == '\n')
flag2 = 1;
else
{
if(flag2)
{
kol.word++;
flag2 = 0;
}
}
if(s[i] == '\n')
flag1 = 1;
}
}
return kol;
}
Он отлично работает для всех текстовых файлов, но когда я называю его в файл я получил после компиляции сам он does't дать ответ туалет дает.
Вы имеете в виду '' \ n''? – Useless
'\ n' работает только в кодировке ASCII. Я имею в виду что-то вроде _isdigit() _ function – Taygrim
Вы вызываете 'read (descr)', где 'descr' - предположительно файловый дескриптор. Как он был открыт? И * как * ваш результат отличается от вывода 'wc', и на каком входе? –