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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
женя777
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 37
#1

Вывод списка в файл - C++

04.11.2013, 20:52. Просмотров 306. Ответов 2
Метки нет (Все метки)

Мне необходимо чтобы изначально вводился список книг (автор, название, год, количество страниц), с этим все в порядке, но после этого необходимо вывести список книг изданных после заданного года. Получается так что все книги изданные после заданного года почему-то выводятся дважды кроме последней которая выводится 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define size 50
 
FILE *fl;
struct lib{
    char aut[size];
    char tit[size];
    char year[size];
    char page[size];
}lib[size];
char name[30];
int nst=0;
int i=0;
int spisok();
char s[size];
int main(){
    int god;
    printf("vvedite imya faila "); 
    scanf("%s",&name);
    fl=fopen(name,"w");
    {
    printf("vvedite kolichestvo knig ");
    scanf("%d",&nst);
    for (int i=0;i<nst;i++){
        printf("Vvedite imya avtora ");
        scanf("%s",lib[i].aut);
        printf("Vvedite nazvanie knigi ");
        scanf("%s",lib[i].tit);
        printf("Vvedite god izdaniya ");
        scanf("%s",lib[i].year);
        printf("Vvedite kolichestvo stranic ");
        scanf("%s",lib[i].page);
    }
    printf("Vvedite god ");
    scanf("%d",&god);
    while(i<nst){
        if(atoi(lib[i].year)>=god){
        strcat(s,lib[i].aut);
        strcat(s,"\r\n");
        strcat(s,lib[i].tit);
        strcat(s,"\r\n");
        strcat(s,lib[i].year);
        strcat(s,"\r\n");
        strcat(s,lib[i].page);
        strcat(s,"\r\n");
        }
        i++;
        fputs(s,fl);
    }
    fclose(fl);
    }
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2013, 20:52     Вывод списка в файл
Посмотрите здесь:

Вывод связного списка в файл - C++
Пишу программу для манипуляций со связным списком #include&lt;iostream&gt; #include&lt;fstream&gt; using namespace std; ...

Вывод списка - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;vld.h&gt; #include &lt;locale.h&gt; #include &lt;Windows.h&gt; #define size 20 using...

Вывод списка - C++
if(key=='3') {p=head; while(p-&gt;next != NULL) { cout &lt;&lt; p-&gt;number_UDK &lt;&lt; endl; cout &lt;&lt;...

Вывод списка на экран - C++
Привет, всем. Помогите, разобраться с непонятной ошибкой: при выводе выводит только последний элемент списка...т.е. задав: List's lengh =...

Вывод списка студентов - C++
Помогите пожалуйста, вот пример #include &lt;stdio.h&gt; #include &lt;conio.h&gt; struct STUDENT { char fio; /*фамилия и.о. */ ...

Вывод на экран списка - C++
Не могу никак реализовать вывод списка структур .Выводится только 1 запись из например 5 введенных.Подскажите в чем ошибка? ...

Вывод списка приложений - C++
Здравствуйте. Как можно вывести список работающих приложений в консоль?

Вывод списка файлов из директории - C++
Доброе время суток. Возникла проблема, мне необходимо осуществить вывод списка файлов из определенной директории(задается пользователем),...

Создание и вывод линейного списка - C++
код я написал, но он ничего на экран не выводит в чем может быть ошибка #include &lt;iostream&gt; #include&lt;fstream&gt; using namespace std; ...

Вывод списка, LIFO и FIFO - C++
Программа создает два списка: один с числами, второй эти числа делит на четные и нечетные. Но при создании или выводе второго списка...

Заполнение и вывод однонаправленного списка - C++
Пытаюсь в функции createAndFillDirList заполнить структуру при помощи метода generateCharArray, но при попытке вывести такой список выводит...

Ввод и вывод односвязного списка - C++
Немогу ввести и вывести односвязный список.Ввожу список нормально, а выводит очень маленькие отрицательные числа, причём все одинаковые.Вот...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
reckless91
30 / 30 / 1
Регистрация: 01.11.2013
Сообщений: 63
04.11.2013, 21:56     Вывод списка в файл #2
Здесь исправление твоей ошибки, смотри комментариий к коду (--->) и ф-ию memset

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
56
57
58
59
60
61
62
63
64
#define _CRT_SECURE_NO_WARNINGS
#include <iostream> 
// ---> это чистый Си, плюсы тут не при делах
//      так что можешь менять на библиотеку iostream на stdio.h
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define size 50
 
FILE *fl;
struct lib{
    char aut[size];
    char tit[size];
    char year[size];
    char page[size];
}lib[size];
char name[30];
int nst=0;
int i=0;
int spisok();
char s[size];
int main(){
    int god;
    printf("vvedite imya faila "); 
    scanf("%s",&name);
    fl=fopen(name,"w");
    {
    printf("vvedite kolichestvo knig ");
    scanf("%d",&nst);
    for (/*int*/ i=0;i<nst;i++){    //  ---> i уже была определена
        printf("Vvedite imya avtora ");
        scanf("%s",lib[i].aut);
        printf("Vvedite nazvanie knigi ");
        scanf("%s",lib[i].tit);
        printf("Vvedite god izdaniya ");
        scanf("%s",lib[i].year);
        printf("Vvedite kolichestvo stranic ");
        scanf("%s",lib[i].page);
    }
    printf("Vvedite god ");
    scanf("%d",&god);
    //  ---> После цикла for, i = nst, поэтому
    i = 0;
    while(i<nst){
        if(atoi(lib[i].year)>=god){
        strcat(s,lib[i].aut);
        strcat(s,"\r\n");
        strcat(s,lib[i].tit);
        strcat(s,"\r\n");
        strcat(s,lib[i].year);
        strcat(s,"\r\n");
        strcat(s,lib[i].page);
        strcat(s,"\r\n");
        }
        i++;
        fputs(s,fl);
        // ---> после каждой итерации цикла надо чистить массив s, поэтому у тебя повторения 
        memset(s, NULL, size); // ---> например так
    }
    fclose(fl);
    }
    _getch();
    return 0;
}
женя777
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 37
04.11.2013, 22:01  [ТС]     Вывод списка в файл #3
Огромное спасибо
Ответ Создать тему
Опции темы

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