Этот код:
if( *c != ' ' && *c != '\t'){
pattern[i++] = *c;
}
заставляет программу накапливать символы, отличные от пробелов или символов табуляции. Затем этот код:
else{
pattern[i] = '\0';
printf("%s ", pattern);
i = 0;
}
заставляет программу печатать накопленный текст, но только когда виден пробел или табуляция. Ничто не заставляет программу печатать накопленный текст, когда виден конец строки. Таким образом, последнее «слово» (текст без пробела или табуляции) строки никогда не печатается. Программа печатает свой ввод с последним словом, удаленным из каждой строки.
Лог c кода необходимо изменить. Простое «исправление» заключается в печати накопленного текста, когда виден конец строки. Однако это приводит к тому, что программа просто копирует свои входные данные в свои выходные данные, а затем обработка для распознавания пробелов или табуляций кажется бессмысленной, так почему она вообще существует? Если вы собираетесь продолжить разработку программы, удалите «www.» из имен в файле hosts вам нужно четко указать это в вопросе, чтобы можно было дать совет о хорошем исправлении.
Дополнительно:
*c != EOF
неверно. EOF
является значением int
и должно сравниваться с int
, возвращаемым различными подпрограммами, такими как getchar
. Сравнивать его с char
, что *c
, неверно.
*c++;
должно быть просто c++;
, поскольку его единственный эффект - увеличение c
. Разыменование для получения значения char
не имеет смысла, поскольку с ним ничего не делается.