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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2011, 15:51   #1
Диман56
Форумчанин
 
Регистрация: 02.11.2010
Сообщений: 103
По умолчанию Поиск и вывод структур в файле

Необходимо, запрашивая определенные данные(о книге), выводить данные в файл(.dat). Часть кода(ввод в файл) я уже написал. Но перед мной встала проблема поиска структуры(по имени итд) и вывода не только строки, но и всей структуры. Как мне организовать поиск структуры в файле? Программу писал в Dev-c++. И ещё-во время выполнения программы 2 и последующие разы 1 строка почему-то выглядит так:Программа загрузки инфы о книгах
Введите автора:Введите название:. Но в 1 раз выполнения цикла всё нормально.
Код:
#include <stdio.h>
#include <conio.h>
struct Book
{
char author[40];
char title[80];
int year;
int pages;
int status;
};
main()
{
FILE *fp;
int k,i;
Book b;
Book c;
b.status=4;
while (b.status !=3)
{
printf("Программа загрузки инфы о книгах\n");
printf("Введите автора:");
gets(b.author);
printf("Введите название: ");
gets(b.title);
printf("Введите год выпуска книги: ");
scanf("%d",&b.year);
printf("Введите количество страниц: ");
scanf("%d", &b.pages);
printf ("Введите статус книги(1-выдана, 0-не выдана): ");
scanf("%d",&b.status);
printf("%s, %s, %d, %d, %d", b.author, b.title, b.year,b.pages, b.status);
fp=fopen("c:\\data\\qq.dat","a");
fprintf(fp,"\n%s\n", b.author);
fprintf(fp,"%s\n",b.title);
fprintf(fp,"%d\n",b.year);
fprintf(fp,"%d\n",b.pages);
fprintf(fp,"%d\n",b.status);
printf("\nВыведено!\n");
fclose(fp);
}
getch();
}
Диман56 вне форума Ответить с цитированием
Старый 12.04.2011, 17:41   #2
Диман56
Форумчанин
 
Регистрация: 02.11.2010
Сообщений: 103
По умолчанию

В общем, объясню проще. Мне надо организовать поиск структуры в файле и понять, почему тупит gets. Вот и всё))
Диман56 вне форума Ответить с цитированием
Старый 12.04.2011, 18:22   #3
Alpha Centauri
Пользователь
 
Аватар для Alpha Centauri
 
Регистрация: 12.04.2011
Сообщений: 16
По умолчанию

может вместо gets'a scanf использовать?
Не ошибается только тот, кто ничего не делает
Alpha Centauri вне форума Ответить с цитированием
Старый 12.04.2011, 18:28   #4
Диман56
Форумчанин
 
Регистрация: 02.11.2010
Сообщений: 103
По умолчанию

scanf читает до первого пробела. А мне надо несколько слов вводить))
Диман56 вне форума Ответить с цитированием
Старый 12.04.2011, 18:44   #5
Alpha Centauri
Пользователь
 
Аватар для Alpha Centauri
 
Регистрация: 12.04.2011
Сообщений: 16
По умолчанию

вот балда) точно ведь)
хм... я делала похожую задачу и у меня структуры были заданы так:
Код:
struct zhurnal
	{
	   int shifr;     //shifr
	   char author [20];//F.I.O. avtora
	   char title [80];//nazvanie knigi
	   int number; //N chit bileta
	   char sname[20];//familia studenta;
	   int data;//data zakaza
	}a[n];
а потом вводила значения с помощью цикла с параметром. предварительно задав "количество структур"))
и ввод структуры выглядел так:
Код:
for(j=0;j<i;j++)
	{
		printf("shifr %d: \n",j);
		scanf("%d",&a[j].shifr);

		printf("Author %s: \n",j);
		scanf("%s",&a[j].author);

		printf("Title %s: \n",j);
		scanf("%s",&a[j].title);

		printf("Chitatelskij bilet N %d: \n",j);
		scanf("%d",&a[j].number);

		printf("Student %s: \n",j);
		scanf("%s",&a[j].sname);

		printf("Data zakaza %s: \n",j);
		scanf("%s",&a[j].data);
	}
как организовать поиск в файле,не знаю. сама с файлами сейчас "плюхаюсь" )))
надеюсь эти кусочки программы как-то помогут))
Не ошибается только тот, кто ничего не делает
Alpha Centauri вне форума Ответить с цитированием
Старый 12.04.2011, 18:49   #6
Диман56
Форумчанин
 
Регистрация: 02.11.2010
Сообщений: 103
По умолчанию

И у вас scanf читал строку с пробелами?
Диман56 вне форума Ответить с цитированием
Старый 12.04.2011, 18:51   #7
Alpha Centauri
Пользователь
 
Аватар для Alpha Centauri
 
Регистрация: 12.04.2011
Сообщений: 16
По умолчанию

да.читал.)
Не ошибается только тот, кто ничего не делает
Alpha Centauri вне форума Ответить с цитированием
Старый 12.04.2011, 18:52   #8
Диман56
Форумчанин
 
Регистрация: 02.11.2010
Сообщений: 103
По умолчанию

Блин, как так?)))scanf же читает строку до 1 пробела))
Диман56 вне форума Ответить с цитированием
Старый 12.04.2011, 18:56   #9
Alpha Centauri
Пользователь
 
Аватар для Alpha Centauri
 
Регистрация: 12.04.2011
Сообщений: 16
По умолчанию

так. стоп. а почему до пробела то? с нажатием enter не путаешь?
Не ошибается только тот, кто ничего не делает
Alpha Centauri вне форума Ответить с цитированием
Старый 12.04.2011, 18:59   #10
Диман56
Форумчанин
 
Регистрация: 02.11.2010
Сообщений: 103
По умолчанию

Нет вроде))Я пробовал с помощью scanf прочитать строку с пробелом)Не получилось(
Диман56 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск символов в тестовом файле и их вывод. sinobithug PHP 7 05.11.2010 14:55
Двоичный поиск в массиве структур vistaman1 Общие вопросы C/C++ 2 28.05.2010 17:30
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
Поиск в файле, вывод из файла online_maniac Помощь студентам 2 01.11.2009 09:32
Чтение/Поиск в txt файле и вывод в ComboBox limnique Общие вопросы C/C++ 2 05.09.2008 23:01