Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 410
от 17.05.2006, 18:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 323, Экспертов: 46
В номере:Вопросов: 3, Ответов: 3


Вопрос № 42785: Доброй ночи, уважаемые эксперты! Нужно в С написать прогу, кот будет из текстового файла, в котором находится телефонная база считывать запись под введенным с клавиатуры номером и выводить ее на экран и это будет повторяться пока не будет введена #.....
Вопрос № 42839: Уважаемые эксперты, я пишу MVC++ 6.0, при использовании класса CEDIT, на своей форме, программно SetWindowText (...) вписываю текст. Вопрос можно ли устанавливать символ перевода строки внутри этого класса, чтобы в поле редактирования CEDIT строки бы...
Вопрос № 42872: Здравствуйте. Мне нужно вставить в програму отрывок кода ассемблера и использовать в нем какое нибудь прерывание помогите плиз исправить. например: ...

Вопрос № 42.785
Доброй ночи, уважаемые эксперты! Нужно в С написать прогу, кот будет из текстового файла, в котором находится телефонная база считывать запись под введенным с клавиатуры номером и выводить ее на экран и это будет повторяться пока не будет введена #... Заранее спасибо.

Приложение:

Отправлен: 12.05.2006, 01:46
Вопрос задала: Karina (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Селиванов Александр Владимирович
Здравствуйте, Karina!
Пожалуйста, но сперва несколько коментариев:
для выхода предлагаю вводить -1, а не '#', т.к. у символа '#' код 35, а значит это вносит ограничения на количество записей в базе данных. Конечно, это можно обойти, но легче и не подходить :)
телефон можно запасывать и так: 56-67-78
все поля, и имя и фамилия и номер телефона не должны быть длинее 254 символов
имя файла базы данных задаётся как параметр, если он не задан, то открывается файл по умолчанию, с именем "default.txt"

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

struct telebase
{
int id; // идентификатор (номер)
char *surname; // фамилия
char *name; // имя
char *number; // номер телефона
telebase *next;
};

telebase* Find(telebase *base, int id)
{
telebase *pt(base->next);
// файл данных упорядочен по идентификаторам
// если нет, то в следующей строке убрать "&& telebase->id < id"
while(pt != NULL && pt->id < id)
pt = pt->next;
// если файл данных не упорядочен, то убрать следующие 2 строки
if(pt == NULL || pt->id > id)
return NULL;
return pt;
}

int LoadFromFile(char FileName[], telebase *base)
{
int i(0);
FILE *fp;
if((fp = fopen(FileName, "r")) != NULL)
{
telebase *pt(base);
char str[255]; // предполагаем, что ни имя ни фамилия, ни номер телефона не длинее 255 символов
while(!feof(fp))
{
pt->next = new telebase;
pt = pt->next;
fscanf(fp, "%i", &pt->id); // читаем id
fscanf(fp, "%s", str); // читаем фамилию
pt->surname = new char[strlen(str) + 1];
strcpy(pt->surname, str);
fscanf(fp, "%s", str); // читаем имя
pt->name = new char[strlen(str) + 1];
strcpy(pt->name, str);
fscanf(fp, "%s", str); // читаем телефон
pt->number = new char[strlen(str) + 1];
strcpy(pt->number, str);
i++;
}
pt->next = NULL;
fclose(fp);
}
return i;
}

void main(int argc, char* argv[])
{
int id;
telebase base, *pt;
if(argc == 1) // если имя файла данных не задано как параметр
id = LoadFromFile("default.txt", &base); // открываем файл по умолчанию
else
id = LoadFromFile(argv[1], &base);
printf(" Loading %d users ", id);
printf(" Enter ID (for exit enter -1) >> ");
scanf("%i", &id);
while(id != -1)
{
pt = Find(&base, id);
if(pt == NULL)
printf(" User not found ");
else
printf(" surname: %s name: %s number: %s ---------------------------------- ",
pt->surname, pt->name, pt->number);
printf(" Enter ID (for exit enter -1) >> ");
scanf("%i", &id);
}
}
Ответ отправил: Селиванов Александр Владимирович (статус: 1-ый класс)
Ответ отправлен: 13.05.2006, 22:07


Вопрос № 42.839
Уважаемые эксперты, я пишу MVC++ 6.0, при использовании класса CEDIT, на своей форме, программно SetWindowText (...) вписываю текст. Вопрос можно ли устанавливать символ перевода строки внутри этого класса, чтобы в поле редактирования CEDIT строки были более читабельными.
Отправлен: 12.05.2006, 13:27
Вопрос задал: Воробьев Дмитрий Владимирович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: estiGi
Здравствуйте, Воробьев Дмитрий Владимирович!
Можно. Только вначале ему нужно проставить стиль multiline - в визарде или программно -
SetWindowLong (m_hEditWnd, GWL_STYLE,
GetWindowLong (m_hEditWnd, GWL_STYLE) | ES_MULTILINE);
Ответ отправил: estiGi (статус: Студент)
Ответ отправлен: 12.05.2006, 13:40
Оценка за ответ: 4


Вопрос № 42.872
Здравствуйте.
Мне нужно вставить в програму отрывок кода ассемблера и использовать в нем какое нибудь прерывание
помогите плиз исправить.
например:

Приложение:

Отправлен: 12.05.2006, 17:59
Вопрос задал: FireMag (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Raptor1
Здравствуйте, FireMag!
Если это программа для Windows то использовать прерывания не удастся
Ответ отправил: Raptor1 (статус: Студент)
Ответ отправлен: 13.05.2006, 13:13


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.32 от 03.05.2006
Яндекс Rambler's Top100

В избранное