Печать line
при вводе if(space(ch))
или if(separator(ch))
вместо нахождения каждого символа строки. После этого установите первый байт на 0
, чтобы строка снова стала «пустой»:
if(space(ch))
{
printf(" %03d: %s\n", line_num++, line);
line[0] = '\0';
printf(" %03d: %c\n", line_num++, ch);
}
if(letter(ch))
{
append(line, ch);
}
if(separator(ch))
{
printf(" %03d: %s\n", line_num++, line);
line[0] = '\0';
printf(" %03d: %c\n", line_num++, ch);
}
Возможно, вам также следует добавить else
к if(letter(ch))
и if(separator(ch))
. Это может немного улучшить производительность, поскольку ни одно из этих условий не перекрывается.
Обратите внимание, что это предполагает, что разделители и пробелы не идут вместе, но это не обязательно имеет значение.
Здесьупрощенная версия этого, которая не требует дублированного кода:
if(letter(ch))
{
append(line, ch);
}
else
{
printf(" %03d: %s\n", line_num++, line);
line[0] = '\0';
}
if(space(ch) || separator(ch))
{
printf(" %03d: %c\n", line_num++, ch);
}