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

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

Восстановить пароль Регистрация
 
женя777
0 / 0 / 0
Регистрация: 10.12.2012
Сообщений: 37
04.11.2013, 20:52     Вывод списка в файл #1
Мне необходимо чтобы изначально вводился список книг (автор, название, год, количество страниц), с этим все в порядке, но после этого необходимо вывести список книг изданных после заданного года. Получается так что все книги изданные после заданного года почему-то выводятся дважды кроме последней которая выводится 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++ Вывод списка
Ввод и вывод односвязного списка C++
Вывод списка студентов C++
Вывод на экран списка C++
Вывод списка файлов из директории C++
Вывод списка на экран C++
C++ Вывод односвязного списка на C
Вывод списка 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
Огромное спасибо
Yandex
Объявления
04.11.2013, 22:01     Вывод списка в файл
Ответ Создать тему
Опции темы

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