Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2013, 22:55   #1
Nonamelol
Пользователь
 
Аватар для Nonamelol
 
Регистрация: 15.09.2013
Сообщений: 19
По умолчанию Программа копирования символьного файла

Здравствуйте! Я прохожу программирование по книжке и сказали сделать такую программку:
Код:
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>

#define eof -1

int main()
{
	int c;
	printf("Make input>\n");
	c=getchar();
	while(c != eof)
	{
		putchar(c);
		c=getchar();
	}
	getch();
}
Скажите, почему в цикле while написано (c != eof), а не (c = eof). И можете ли объяснить, что делает putchar и getchar? В книге так написано, что я мало что понял.
Nonamelol вне форума Ответить с цитированием
Старый 19.09.2013, 07:17   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
почему в цикле while написано (c != eof), а не (c = eof)
потому что цикл должен выполнятся "пока не конец", а не "пока конец"

Цитата:
что делает putchar и getchar? В книге так написано, что я мало что понял.
вводит и выодит символ, что можно было не понять из книги?
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 19.09.2013, 07:34   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Ребят не хотелось бы ни кого пугать, но это операция присваивания....
Код:
(c = eof)
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 19.09.2013, 09:55   #4
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

понятно, что присваивания, но вопрос ТС был о другом... так что эту мелочь можно опустить
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 19.09.2013, 10:11   #5
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Мелочь.... Забавно...
Nonamelol вы разобрались????
Смотрите
Код:
#define eof -1
вы объявляете константу и присваиваете ей значение -1. Так..
И далее судя по Вашему коду вы сравниваете символы с -1. Зачем не совсем понятно... Так в книгах пишут???
EOF — end of file — символ, обозначающий конец файла. Возможно вы это имели в виду.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 19.09.2013 в 11:21.
Bugrimov вне форума Ответить с цитированием
Старый 19.09.2013, 11:30   #6
Nonamelol
Пользователь
 
Аватар для Nonamelol
 
Регистрация: 15.09.2013
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Мелочь.... Забавно...
Nonamelol вы разобрались????
Смотрите
Код:
#define eof -1
вы объявляете константу и присваиваете ей значение -1. Так..
И далее судя по Вашему коду вы сравниваете символы с -1. Зачем не совсем понятно... Так в книгах пишут???
EOF — end of file — символ, обозначающий конец файла. Возможно вы это имели в виду.
Я eof присвоил -1, чтобы когда нажимаешь Ctrl+Z программа заканчивалась. Т.е. когда нажимаешь Ctrl+Z вводится символ -1, и программа заканчивается. Я не понял почему восклицательный знак стоит перед =, и что он обозначает.

Так же непонятно, что делает putchar и getchar. С помощью них можно ввести символы с клавиатуры?
Nonamelol вне форума Ответить с цитированием
Старый 19.09.2013, 11:51   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Я не понял почему восклицательный знак стоит перед =, и что он обозначает.
он означает "НЕ РАВНО"
(это операция "неравенства", ну то, что в математике записывает как перечёркнутый знак равенства.)

Цитата:
Так же непонятно, что делает putchar и getchar.
putchar - выводит символ на устройство вывода (например, на экран консоли)
getchar - функция чтения символа с устройство ввода (например, вводимые с клавиатуры)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.09.2013, 12:02   #8
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

-1 - это код ctrl+z, даже не догадывался... Вероятно я просто чего-то не знаю....
'\032' - код ctrl+z.
putchar и getchar - это функции ввода и вывода символов....

!= - это НЕ РАВНО. Соответственно пока вы не ввели код символа для завершения, цикл while будет выполняться...
Serge_Bliznykov все отлично описал.... За что ему и спасибо.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 19.09.2013 в 12:07.
Bugrimov вне форума Ответить с цитированием
Старый 19.09.2013, 14:00   #9
Nonamelol
Пользователь
 
Аватар для Nonamelol
 
Регистрация: 15.09.2013
Сообщений: 19
По умолчанию

Огромное вам спасибо!
Nonamelol вне форума Ответить с цитированием
Старый 19.09.2013, 18:35   #10
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Здравствуйте! Я прохожу программирование по книжке и сказали сделать такую программку:
Что за книжка?
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для копирования файла из одного места в другое с просчётом размера исходного файла (Delphi) Xoma37 Помощь студентам 4 11.09.2012 17:58
Программа копирования строки random_name Visual C++ 3 25.03.2012 22:47
Программа копирования экрана arsik Помощь студентам 5 09.02.2012 09:45
Запись и чтение символьного массива в файл/из файла (C++) Noyabr Помощь студентам 6 22.01.2012 13:59