Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Argentoz
0 / 0 / 2
Регистрация: 29.11.2014
Сообщений: 36
1

В файле нужно сделать выбор по заданному значению

03.06.2015, 15:45. Просмотров 238. Ответов 2
Метки нет (Все метки)

Помогите с файлом, нужно сделать выбор по автору. В чем может быть ошибка, подскажите, пожалуйста?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<iostream>
#include<stdio.h>
#include<io.h>
#include<fstream>
#include<cstring>
using namespace std;
int main()
{
struct knigi
{
char autor[20];
char name[15];
int god;
int price;
};
int i,n;
knigi person;
FILE * archive;
char * file_name="new.dat";
archive=fopen(file_name,"w");
printf("Сколько книг в архиве?\n");
scanf("%d", &n);
printf("Введите данные о книгах\n");
printf("Автор, название, год издания, цена\n");
for(i=1;i<=n;i++)
{
printf("\n %d ) \n", i);
  scanf ("%s", & person.autor);
  scanf ("%s", &person.name);
  scanf ("%d", &person.god);
  scanf ("%d", & person.price);
 
fwrite(&person, sizeof(person),1,archive);
};
 
printf("\nСведения о книгах");
archive=fopen("new.dat","r");
char s[10];
printf("\n Выберите автора:\n");
scanf("%s",&s);
while (!feof(archive))
{
fread(&person, sizeof(person),1,archive);
 
if (feof(archive)) break;
 
if (strcmp(s, person.autor)==0)
{
   printf("%s, %s, %d, %d", person.autor ,person.name, person.god, person.price);
}
}
fclose(archive);
   return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2015, 15:45
Ответы с готовыми решениями:

Поиск в файле по заданному значению элемента структуры
В консольном приложении мне нужно реализовать поиск по определенному параметру....

Шаблон поиска элементов по заданному значению
не находит индекс задаваемого элемента из списка. мне подсказывали убрать node...

Вычислить значение функции по заданному значению переменных:

Вычислить значение функции, по заданному значению аргумента х:
Может кто знает где можно найти обучающие видеоролики, то ссылку скиньте)...

Вычислить значение функции, по заданному значению аргумента х
С системой это так же код писать или по-другому?:-|

2
Max Dark
шКодер самоучка
1970 / 1746 / 861
Регистрация: 09.10.2013
Сообщений: 3,855
Записей в блоге: 6
Завершенные тесты: 2
03.06.2015, 15:56 2
1) не закрыт файл после окончания записи
2) файл открывается в текстовом режиме, а пишется/читается в двоичном
1
Argentoz
0 / 0 / 2
Регистрация: 29.11.2014
Сообщений: 36
03.06.2015, 16:35  [ТС] 3
Тогда как сравнить строки в двоичном коде, подскажите?

Добавлено через 12 минут
Решил сделать с помощью fscanf и fprintf, не работает все равно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include<iostream>
#include<stdio.h>
#include<io.h>
#include<fstream>
#include<cstring>
using namespace std;
int main()
{
struct knigi
{
char autor[20];
char name[15];
int god;
int price;
};
int i,n;
knigi person;
FILE * archive;
char * file_name="new.dat";
archive=fopen(file_name,"w");
printf("Сколько книг в архиве?\n");
scanf("%d", &n);
printf("Введите данные о книгах\n");
printf("Автор, название, год издания, цена\n");
for(i=1;i<=n;i++)
{
printf("\n %d ) \n", i);
scanf ("%s", & person.autor);
  scanf ("%s", &person.name);
  scanf ("%d", &person.god);
  scanf ("%d", & person.price);
 
   fprintf(archive, "%s %s %d %d", person.autor, person.name, person.god, person.price);
}
fclose(archive);
 
printf("\nСведения о книгах");
archive=fopen("new.dat","r");
char s[10];
printf("\n Выберите автора:\n");
scanf("%s",&s);
while (!feof(archive))
{
    fscanf(archive, "%s %s %d %d", &person.autor, &person.name, &person.god, &person.price);
 
if (feof(archive)) break;
 
if (strcmp(s, person.autor)==0)
{
   printf("%s, %s, %d, %d", person.autor ,person.name, person.god, person.price);
}
}
fclose(archive);
   return 0;
}
Добавлено через 7 минут
Разобрался, спасибо за наводку
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2015, 16:35

Вывести номера элементов массива, равных заданному значению
Напишите программу, которая выводит номера элементов массива, равных заданному...

Вычислить значение y= (tgx-cos(x-ln2,51))/(x*x+3) по заданному значению x
Здравствуйте, уважаемые пользователи. Помогите пожалуйста написать код от...

Подобрать к заданному числу ранвую или близкую по значению переменную
Вобщем есть 10 переменных. Пользователь задает число Н и к нему подбирается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru