Форум программистов, компьютерный форум CyberForum.ru

добавление записи - C++

Восстановить пароль Регистрация
 
reventon707
0 / 0 / 0
Регистрация: 23.02.2012
Сообщений: 16
08.04.2012, 19:58     добавление записи #1
приветствую всех!!!!у меня такая проблема - мне надо написать программу,которая добавляет запись в файл(уже созданный). но т.к. я новичок в этом деле,то,конечно,у меня не получилось. прошу указать на ошибки. можно прям носом ткнуть)))))и показать где и что именно исправлять. заранее всем спасибо!!!!


вот тут моя наработка. сама проблема заключается в том,что добавляет не все. по условию надо добавить автора и его книгу. но добавляет только книгу.
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
#include<fstream>
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
 char str[100];
 int main(void)
 {
     FILE*F=fopen("H:\\spravochnik.txt","at");
     if (F==NULL)
     { printf("oshibka otkritiya!!!");}
     fscanf(F,"%s\n",str);
 
    char str[100];
    printf("vvedite FIO: ");
    gets(str);
    printf("FIO vvedeno: %s\n",str);
 
  printf("vvedite nazvanie knigi: ");
  scanf ("%s",str);
  printf("nazvanie knigi vvedeno: ");
  puts(str);
 
 
 
    fprintf(F,"%s\n",str);
 
 
     printf("zapis' dobavlena");;
 
 
return 0;
 }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BoBaH26
30 / 30 / 0
Регистрация: 02.12.2010
Сообщений: 255
08.04.2012, 20:17     добавление записи #2
Попробуйте использовать структуры:
C++
1
2
3
4
5
6
struct List
   {
   char author[50];
   char book[50];
   };
List info[20];
А в зависимости от того, что Вам нужно, оперируйте с элементами структуры.
Обращение к элементу структуры происходит через ".".
Например, info[5].author, означает, что мы обращаемся к 6 (в нашем понимании) записи, элементу "author".
reventon707
0 / 0 / 0
Регистрация: 23.02.2012
Сообщений: 16
08.04.2012, 20:23  [ТС]     добавление записи #3
а куда конкретно его вставить?
BoBaH26
30 / 30 / 0
Регистрация: 02.12.2010
Сообщений: 255
08.04.2012, 20:39     добавление записи #4
Мой способ Вам не подойдет, т.к. придется все набирать заново.
Как я понял, Вы только вводите название книги, а автора нет, поэтому он и не выдает его. Необходимо добавить:
C++
1
2
3
4
5
6
7
8
9
10
11
printf("vvedite avtora: ");
  scanf ("%s",str);
  printf("avtor vveden: ");
  puts(str);
 
 
 
    fprintf(F,"%s\n",str);
 
 
     printf("zapis' dobavlena");
Добавлено через 2 минуты
Кроме того, проверку наличия и работоспособности файла Вы сделали:
C++
1
2
if (F==NULL)
     { printf("oshibka otkritiya!!!");}
Но остальной код будет выполняться, даже если будут проблемы с файлом, поэтому весь остальной код необходимо заключить в "else", т.е.
C++
1
2
if (F==NULL)
     { printf("oshibka otkritiya!!!");} else {...}//Вот тут все остальное.
reventon707
0 / 0 / 0
Регистрация: 23.02.2012
Сообщений: 16
08.04.2012, 20:52  [ТС]     добавление записи #5
если Вам не сложно,могли бы Вы всю прогу полностью написать. у меня что-то вообще никак не получается. буду очень благодарен!!!!!
BoBaH26
30 / 30 / 0
Регистрация: 02.12.2010
Сообщений: 255
08.04.2012, 20:55     добавление записи #6
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
#include<fstream>
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
 char str[100];
 int main(void)
 {
     FILE*F=fopen("H:\\spravochnik.txt","at");
     if (F==NULL)
      printf("oshibka otkritiya!!!"); else{
     fscanf(F,"%s\n",str);
 
    char str[100];
    printf("vvedite FIO: ");
    gets(str);
    printf("FIO vvedeno: %s\n",str);
 
  printf("vvedite nazvanie knigi: ");
  scanf ("%s",str);
  printf("nazvanie knigi vvedeno: ");
  puts(str);
 
 
 
    fprintf(F,"%s\n",str);
 
 
     printf("zapis' dobavlena");
printf("vvedite avtora: ");
  scanf ("%s",str);
  printf("avtor vveden: ");
  puts(str);
 
 
 
    fprintf(F,"%s\n",str);
 
 
     printf("zapis' dobavlena");
}
 
 
return 0;
 }
Прошу прощения за синтаксис, переделывать все долго, но если исходный вариант работал, то этот тоже должен работать.
reventon707
0 / 0 / 0
Регистрация: 23.02.2012
Сообщений: 16
08.04.2012, 21:02  [ТС]     добавление записи #7
работал,но,увы,не так как надо. спасибо огромное!!!а не подскажете как сделать проверку данных?т.е. при добавлении записи проверить есть такая запись или нет?если не сложно хотелось бы увидеть в коде С++. у меня с этим вообще никаких продвижений.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2012, 22:19     добавление записи
Еще ссылки по теме:

C++ [Классы, Наследование, Шаблоны] Добавление записи в список
C++ Проверить, есть ли в записи числа m цифры, совпадающие с цифрами в записи числа n

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

Или воспользуйтесь поиском по форуму:
BoBaH26
30 / 30 / 0
Регистрация: 02.12.2010
Сообщений: 255
08.04.2012, 22:19     добавление записи #8
reventon707, извините, но придется писать довольно объемный код, а времени сейчас у меня мало. Могу сказать, что можно использовать функцию нахождения подстроки в строке "strstr (s1,s2)", где s1 - строка, в которой ищем подстроку, а s2 - искомая подстрока. Т.е. необходимо проверить все строки файла путем считывания и использования указанной функции. Например, считали из файла F строку str, используем strstr (str,s), где s - необходимая нам информация, а str - строка, считанная из файла F. Т.е. необходимо в цикле считывать все строки файла и проверять вхождение введенной нами строки в считанную строку. Надеюсь, изложил понятно....
Yandex
Объявления
08.04.2012, 22:19     добавление записи
Ответ Создать тему
Опции темы

Текущее время: 11:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru