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

Задачка на считывание и запись чисел в файл

21.04.2016, 18:34. Просмотров 246. Ответов 3
Метки нет (Все метки)

Доброго времени! Помогите с задачкой.
Задачка на поиск данных в файле:
"Осуществить: 1 – добавление, 2 – поиск (фамилия, з/п, должность)вывод строки ".

Не вижу в коде ошибки, но в случае совпадания не прекращается вывод результата.

И вторая сложность с решением этой задачи- считывание и запись, переменной содержащей возраст (age_search и age_search), если объявлена целочисленным типом; на консоль без конца получаю значение 3210420, если объявляю переменной интовой (код приведен вторым)

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "Russian");
    FILE *f;
    char name[30];
    char name_search[30]; //переменная для считывания имени если поиск по имени
    char age[3];
    char age_search[3]; //переменная для считывания возраста если поиск по возрасту
    int search; //если 1- ищем по имени, если 2- по возрасту
    int flag; //совпадение найдено при поиске в файле по критерию
    int i=0;
    
    
    /*------------------------------------ДОБАВЛЕНИЕ В ФАЙЛ---------------------------------------*/
    if((f=fopen("1.txt","at"))==NULL)  //открыли файл для добавления
    {
        printf("Error");
        return;
    }
    printf("Введите имя и возраст: ");
    scanf("%s%s", &name, &age);
    fprintf(f, "\n%s %s", name, age);
    fclose(f);  //закрыли файл после добавления
    
    /*-----------------------------------ПОИСК В ФАЙЛЕ--------------------------------------------*/
    
    printf("Для поиска по имени введите 1, по возрасту введите 2\n");
    scanf("%d", &search);
    
    if((f=fopen("1.txt","at"))==NULL)   //проверяем указатель на значение
    {
            printf("Error");
            return;
    }
      //ошибки не обнаружены при открытии файла в режиме чтения
    if ( 1 ==  search) //поиск по имени
    {
        printf("Введите имя для поиска: ");
        scanf("%s", &name_search);
        flag=0;  //совпадений 0
            
        while(!feof(f))   //  пока не конец файла (feof – возвращает конец файла)
        {
            fscanf(f,"%s%s",&name, &age); //считали с файла строку 
            i = strcmp(name, name_search);
            if ( 0 == i ) 
            {
                printf("Результат поиска: %s %s\n",name, age);
                flag = 1; //совпадения найдены
            }
 
        }
    }
    if  ( 2 ==  search)//поиск по возрасту
    {
        printf("Введите возраст для поиска: ");
        scanf("%s", &age_search);
        flag=0; //совпадений 0
            
        while(!feof(f))   //  пока не конец файла (feof – возвращает конец файла)
        {
            fscanf(f,"%s%s",&name, &age);
            i = strcmp(age, age_search);
            if ( 0 == i )
            {
                printf("Результат поиска: %s %s",name, age);
                flag = 1; //совпадения найдены
            }
        }
        
    }
    if (0 == flag)
        printf("В результате поиска совпадения не найдены");
    fclose(f); //закрыли файл после чтения
 
    getch();
    return;
}
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "Russian");
    FILE *f;
    char name[30];
    char name_search[30]; //переменная для считывания имени если поиск по имени
    int age[3];
    int age_search[3]; //переменная для считывания возраста если поиск по возрасту
    int search; //если 1- ищем по имени, если 2- по возрасту
    int flag; //совпадение найдено при поиске в файле по критерию
    int i=0;
    
    
    /*------------------------------------ДОБАВЛЕНИЕ В ФАЙЛ---------------------------------------*/
    if((f=fopen("1.txt","at"))==NULL)  //открыли файл для добавления
    {
        printf("Error");
        return;
    }
    printf("Введите имя и возраст: ");
    scanf("%s%d", &name, &age);
    fprintf(f, "\n%s %d", name, age);
    fclose(f);  //закрыли файл после добавления
    
    /*-----------------------------------ПОИСК В ФАЙЛЕ--------------------------------------------*/
    
    printf("Для поиска по имени введите 1, по возрасту введите 2\n");
    scanf("%d", &search);
    
    if((f=fopen("1.txt","at"))==NULL)   //проверяем указатель на значение
    {
            printf("Error");
            return;
    }
      //ошибки не обнаружены при открытии файла в режиме чтения
    if ( 1 ==  search) //поиск по имени
    {
        printf("Введите имя для поиска: ");
        scanf("%s", &name_search);
        flag=0;  //совпадений 0
            
        while(!feof(f))   //  пока не конец файла (feof – возвращает конец файла)
        {
            fscanf(f,"%s%d",&name, &age); //считали с файла строку 
            i = strcmp(name, name_search);
            if ( 0 == i ) 
            {
                printf("Результат поиска: %s %d\n",name, age);
                flag = 1; //совпадения найдены
            }
 
        }
    }
    if  ( 2 ==  search)//поиск по возрасту
    {
        printf("Введите возраст для поиска: ");
        scanf("%d", &age_search);
        flag=0; //совпадений 0
            
        while(!feof(f))   //  пока не конец файла (feof – возвращает конец файла)
        {
            fscanf(f,"%s%d",&name, &age);
            if ( age == age_search )
            {
                printf("Результат поиска: %s %d",name, age);
                flag = 1; //совпадения найдены
            }
        }
        
    }
    if (0 == flag)
        printf("В результате поиска совпадения не найдены");
    fclose(f); //закрыли файл после чтения
 
    getch();
    return;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2016, 18:34
Ответы с готовыми решениями:

Считывание и запись матрицы в файл
Нужно написать 2 функции: 1) для считывание одномерной марицы из файла для дальшей работы с ним...

Считывание с файла и запись в файл
как считать и записать данные с файла , с расширением txt?

Запись и считывание в файл txt
доброго времени суток, уважаемые программисты, я конечно жутко извиняюсь, за примитивный вопрос, но...

Построчное считывание, обработка строк, и запись в файл
Всем доброго времени дня! Подскажите пожалуйста, как следующую программу. Есть файл, в...

Определить - некорректная запись в файл или считывание
Здраствуйте. Написал програму для записи структур в файл а потм считывания и вывода на екрн. Но...

3
SergioO
168 / 184 / 90
Регистрация: 13.12.2015
Сообщений: 1,000
21.04.2016, 23:46 2
Цитата Сообщение от beginerPy Посмотреть сообщение
#include <iostream>
using namespace std;
вам зачем?
beginerPy, может создать структуру - писать и читать структурами? лучше даже массив структур или список организовать: так легче искать и сортировать потом
обязательно файл должен быть текстовым?
бинарный не подойдет?
0
beginerPy
0 / 0 / 1
Регистрация: 12.05.2015
Сообщений: 20
22.04.2016, 09:53  [ТС] 3
Шапка скопирована, библиотека std и iostream были подключены для system("pause"), только окно консоли быстро закрывалось, и была заменена на getch().
Можно и структурами читать и писать, но проблема со считыванием с файла и записью в него полей с int значениями останется.
Задачка на работу с текстовым файлом.
Задачка не решен, хэлп.
0
beginerPy
0 / 0 / 1
Регистрация: 12.05.2015
Сообщений: 20
24.04.2016, 11:19  [ТС] 4
UP...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2016, 11:19

Запись текста в файл\вывод его на экран\сохранение\считывание информации из файла
Ввести текст произвольного содержания в память ПЭВМ. Вывести на экран. Записать текст в файл. ...

Считывание из входного файла байт с N1 по N2 и с N3 по N4 и запись этих байт в выходной файл
Здравствуйте!Помогите пожалуйста написать программу, которая бы считывала из входного файла байты с...

Считывание чисел, вычитание и запись в новый файл каждой строки
Есть файл, где все строки имеют такую структуру &lt;object id=&quot;object (las2_lodbrigtower) (1)&quot;...


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

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

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