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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2010, 15:58   #1
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию Что делает этот код?

здравствуйте вот вопрос
эта процедура проги для поиска в базе данных
но я не совсем это понимаю
?
Код:
void search(void) {
	printf(	"\n\nПоиск по базе 'people.dat'\n\n" );
	char s[16];
	printf( "Введите часть имени: " );
	scanf_s( "%15s%*[^\n]5000s", s, 16 );

	printf(	"\n\n\tИмя:      \tВозраст:\n" );
	fseek( f, 0, SEEK_SET );
	setlocale( LC_ALL, ".866" );
	block t;
	while( true ) {
		if( fread( &t, sizeof(block), 1, f ) !=1 ) break;
		if( strstr( t.name, s ) != NULL )
			printf( "\t%-15s\t%d\n", t.name, t.age );
	}
	setlocale( LC_ALL, ".1251" );
}
можете пояснить этот кусок пргоги
Код:
printf(	"\n\n\tИмя:      \tВозраст:\n" );
	fseek( f, 0, SEEK_SET );
	setlocale( LC_ALL, ".866" );
	block t;
	while( true ) {
		if( fread( &t, sizeof(block), 1, f ) !=1 ) break;
		if( strstr( t.name, s ) != NULL )
			printf( "\t%-15s\t%d\n", t.name, t.age );
Alex_sim вне форума Ответить с цитированием
Старый 03.03.2010, 16:38   #2
Slicker
Пользователь
 
Регистрация: 25.08.2008
Сообщений: 51
По умолчанию

Код:
while( true ) {
Бесконечный цикл

Код:
		if( fread( &t, sizeof(block), 1, f ) !=1 ) break;
Если достингнут конец файла, выход из цикла

Код:
		if( strstr( t.name, s ) != NULL )
			printf( "\t%-15s\t%d\n", t.name, t.age );
Если значение t.name не пустое, то выводим значения t.name, t.age
Slicker вне форума Ответить с цитированием
Старый 03.03.2010, 16:44   #3
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

спасибо)))))
я просто
не сталкивался с файлами
можете еще под сказать

Код:
 scanf_s( "%15s%*[^\n]5000s", s, 16 ):confused:;
можно ли тоже самое сделать но через cin

Последний раз редактировалось Stilet; 03.03.2010 в 16:48.
Alex_sim вне форума Ответить с цитированием
Старый 03.03.2010, 16:49   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А чем scanf не устраивает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.03.2010, 16:52   #5
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

я scanf не совсем понимаю обьясните
что за что отвечает
?
Alex_sim вне форума Ответить с цитированием
Старый 03.03.2010, 17:06   #6
Slicker
Пользователь
 
Регистрация: 25.08.2008
Сообщений: 51
По умолчанию

Честно признатсья я не профи в С++
%15s вот это ограничение ввода 15 символами насколько я понимаю.. то что дальше написано, мне не понятно

Попробуй написать так

Код:
scanf( "%15s", &s);
Slicker вне форума Ответить с цитированием
Старый 03.03.2010, 17:37   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Про scanf можете прочитать здесь:
http://trivialcoding.ru/Textbook/Les...ntf-scanf.html
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 03.03.2010, 21:35   #8
sadf
 
Регистрация: 03.03.2010
Сообщений: 7
По умолчанию

Дабы не создавать новую тему, напишу здесь, если можно.

Что означает эта строчка кода?

Код:
a = ((val & 1) == 1);
Побитовое И я понимаю, а что означает "==1" ?
sadf вне форума Ответить с цитированием
Старый 03.03.2010, 22:03   #9
Slicker
Пользователь
 
Регистрация: 25.08.2008
Сообщений: 51
По умолчанию

Цитата:
Сообщение от sadf Посмотреть сообщение
Дабы не создавать новую тему, напишу здесь, если можно.

Что означает эта строчка кода?

Код:
a = ((val & 1) == 1);
Побитовое И я понимаю, а что означает "==1" ?
Двойное равно - это равно как сравнение, а не как присвоение.
Например If (a == 1) читается как: Если а равно 1..
Slicker вне форума Ответить с цитированием
Старый 03.03.2010, 22:30   #10
sadf
 
Регистрация: 03.03.2010
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Slicker Посмотреть сообщение
Двойное равно - это равно как сравнение, а не как присвоение.
Например If (a == 1) читается как: Если а равно 1..
Я немножко некорректно выразился. Я имел в виду к чему здесь это равно? Что в даном случае оно означает?
sadf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что делает код AllForCS PHP 1 24.02.2010 00:50
Подскажите пожалуйста что делает этот код SlashMan JavaScript, Ajax 3 10.01.2010 22:41
Что делает этот код? lucky Общие вопросы Delphi 4 17.06.2009 17:02
Что будет собой прдставлять этот код: Pirotexnik Общие вопросы Delphi 3 27.03.2009 13:30
Что делает этот while do? Levhik Общие вопросы C/C++ 4 25.01.2009 17:27