Вопрос № 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"
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);
}
}
Уважаемые эксперты, я пишу MVC++ 6.0, при использовании класса CEDIT, на своей форме, программно SetWindowText (...) вписываю текст. Вопрос можно ли устанавливать символ перевода строки внутри этого класса, чтобы в поле редактирования CEDIT строки были более читабельными.
Отвечает: 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