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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2013, 12:59   #1
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию C++ квайн через чтение файла с исходником

Здравствуйте.

Попробовал ради интереса написать такой квайн, чтобы программа читала свой исходник и выводила символы на экран :D но не получилось, выводится буква 'a' бесконечно.
Подскажите в чем я не прав? )

Код:
#include <stdio.h>

using namespace std;

int main () {
	
	FILE *pf = fopen("1.cpp","r");
	char ch;
	
	if (pf == NULL) printf("opening error\n");
	else {

		while (pf){
			fscanf(pf, "%с", ch);
			printf("%c",ch);
		}

	}
	
return 0;	
}
Alendorff вне форума Ответить с цитированием
Старый 16.07.2013, 13:06   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Прочитайте внимательно какие аргументы нужны для fscanf()

Далее, программа у вас будет работать до бесконечности - когда по вашему закончится while цикл и когда он *должен* закончиться?
waleri вне форума Ответить с цитированием
Старый 16.07.2013, 13:07   #3
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Википедия гласит:
Цитата:
Следует заметить, что программы, использующие внешние данные, куайнами не считаются; то есть исключается прочтение текста программы из файла, ввод его с клавиатуры и так далее.
Как минимум, в fscanf переменную ch надо передавать по ссылке, а не по значению
Код:
fscanf(pf, "%с", &ch);
-- -- -- -- --
не обновил комментарии перед ответом
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 16.07.2013, 13:09   #4
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

Я думал, что после выполнения fscanf позиция для чтения меняется )
Alendorff вне форума Ответить с цитированием
Старый 16.07.2013, 13:11   #5
Alendorff
Форумчанин
 
Аватар для Alendorff
 
Регистрация: 04.06.2011
Сообщений: 104
По умолчанию

За вики отдельное спасибо ) Невнимательный что-то я совсем...
Alendorff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение UART через read dfyz.s Общие вопросы C/C++ 2 15.11.2012 10:14
C++ Builder чтение из файла через пробел reeskblg Помощь студентам 2 14.12.2011 18:20
Чтение строк через fgets() из unicode-файла, Считывает лишь часть строки. malor Общие вопросы C/C++ 1 25.06.2011 23:49
Чтение из файла через поток tim91 Общие вопросы Delphi 3 02.03.2011 09:35