• Авторизация


Проблемка 10-03-2007 16:35 к комментариям - к полной версии - понравилось!


Недавно после длительного кодинга на пхп решил стать мужиком (: и изучить Си. Наткнулся на камень в первой же главе. Printf не срабатывает. Точнее, срабатывает, но если его в цикл впихнуть. Но тогда, ясное дело, результат не верный. Интересно, в чем проблема, т.к. пример взят из книги Кернигана и Ритчи "Язык программирования Си". Не думаю, что бы в первых примерах там были ошибки (: Собирать пробовал Turbo C++ 4, и Borland Turbo C++ 3.0. С нетерпением ожидаю узнать в каком месте я дурак (:

#include <stdio.h>
/* подсчет вводимых символов; */
main()
{
    long nc;
    nc = 0;

    while (getchar() != EOF)
        ++nc;
    printf(“%ld\n”, nc);
}

вверх^ к полной версии понравилось! в evernote
Комментарии (10):
Splint 10-03-2007-16:54 удалить
А что вы имеете в виду под "не срабатывает"?
Splint, ну насколько я понимаю после ввода символа printf должен вывести подсчитанное количество введенных символов. а он ничего не выводит...
Splint 10-03-2007-17:15 удалить
Как это ничего? А символ конца файла вы ему давали?
Splint, мм. господи. как стыдно чувствовать себя ламером. а как дать символ конца файла?.. я думал это аналогично концу ввода.
pupunussi 10-03-2007-17:23 удалить
Если до конца файла считать (EOF), то в стандартный ввод нужно файл скармливать через никсовые пайпы. Если хочется, чтобы программа считала символы с клавы, пока не нажат Enter, то надо EOF поменять на '\n', т.е. на конец строки, а не файла.
Splint 10-03-2007-17:28 удалить
Mandrake, ууу... Сашка_Эмошкин, в консоли Ctrl+Z - символ конца файла.
pupunussi 10-03-2007-17:28 удалить
Исходное сообщение Сашка_Эмошкин Splint, мм. господи. как стыдно чувствовать себя ламером. а как дать символ конца файла?.. я думал это аналогично концу ввода.
EOF и есть конец файла. Твоя версия программы чудесно работает следующим образом: $ gcc -o count count.c $ echo -n "123456789" > in.txt $ ./count < in.txt 9
pupunussi 10-03-2007-17:29 удалить
Splint, что бы это могло значить? Ctrl+Z это в Винде конец файла? У меня, вот, не работает.
Splint 10-03-2007-17:34 удалить
Mandrake, в консольке Винды да. А ежели у вас чо другое, то тогда, ИМХО, стоит глянуть справку к вашей консольке :)
всем большое спасибо (: чувствую, я в ближайшее время успею еще вам поднадоесть.


Комментарии (10): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Проблемка | community_coding - Сообщество программистов | Лента друзей community_coding / Полная версия Добавить в друзья Страницы: раньше»