Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

04.11.2013, 20:52. Просмотров 325. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2013, 20:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод списка в файл (C++):

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

Вывод суммы в файл (файловый ввод/вывод) - C++
Добрый день! Я пытался написать программу, которая должна вводить данные из файла №1, потом вычислять их сумму и полученное значение...

Вывод списка - 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++
Выводи лишь последний элемент, в чёи ошибка? Подскажите пожалуйста #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; ...

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

2
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;
}
0
женя777
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 37
04.11.2013, 22:01  [ТС] #3
Огромное спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2013, 22:01
Привет! Вот еще темы с ответами:

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

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

Вывод односвязного списка - C++
Здравствуйте, помогите найти ошибку в функции. Выводит только первый элемент списка, даже если ты добавил больше.. Вводstruct List*...

Вывод односвязного списка на C - C++
помогите исправить ошибку!не выводит последний элемент списка. пишет: В экземпляре объекта не задана ссылка на объект. вот листинг...


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

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

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