Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 03.07.2013
Сообщений: 20

Работа с текстовым файлом. Удаление строки.

03.07.2013, 13:33. Показов 2668. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый.такой вопрос:мне нужно удалять из файла строчку с данными,если есть совпадение с введенной строкой.то есть,если я ввожу фамилию и такая фамилия есть в строке файла,который я открываю,то эту строчку нужно удалить.ПРоблема в том,что я не знаю,как удалить нужную строчку.И еще- вылезает запись "введите фамилию" столько раз,сколько записей в файле.а нужно по идее просто один раз ввести фамилию и чтоб по строчкам пройтись и найти такую подстрочку.Все строчки,в которых нет совпадений,я записываю в новый файл...помогите пожалуйста разобраться
ВОТ мой код:
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
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include < conio.h>
#include <iostream>
#include <string.h>
#include "locale.h"
using namespace std;
 
 
void main ()
{
    setlocale(LC_ALL, "Russian");
    system("cls");  // Очистка экрана
    int a,b=1;
    char famil2[30];
    char famil[20];
    char imya[30];
    char otchest[30];
    int nomer;
    int ocenki;
    int i,o,p=1;
    int count=1;
    char s[200];
    FILE*t,*nf;
    t=fopen("D:\\программирование\\прога\\tenis\\tenis\\student.txt","r+");
    if((t=fopen("D:\\программирование\\прога\\tenis\\tenis\\student.txt","r+"))==NULL)
        {printf("Ошибка при открытии файла.\n");
            exit(1);
        }
    nf=fopen ("temp.txt","w");//создаю новый файл для записи внего строк,в которых нет совпадений с введенной фамилией
 
        
    while(!feof(t))
        {
            printf("Введите фамилию: ");
            scanf("%s",famil2);
            if (fgets(s,200,t))
            {
                if(s==famil2)//если в строке есть такая фамилия
                {
                char*stud;
                stud=strstr(s,famil2);//функция поиска подстрок в строке
                //не знаю,как удалить строку???
                }
                if (s!=famil2)//если нет совпадений
                    fputs(s,nf);//записываю строку в новый временный 
            }
        }
    fclose (t);
    fclose (nf);
    remove("D:\\программирование\\прога\\tenis\\tenis\\student.txt");//удаляю прежний файл с данными(но он не удаляется почему-то)
    rename ("temp.txt","stud.txt");//переименовываю временный файл
            system ("pause");
            fclose(t);
            
            
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.07.2013, 13:33
Ответы с готовыми решениями:

Работа с текстовым файлом (записать в файл строки и символы в строках в обратном порядке)
Всем привет. Извиняюсь может повторяюсь с задачей, но все же... Задача: Дан txt файл с парой строк, нужно создать результирующий файл и...

Работа с текстовым файлом
Нужно программа которая добавляет записи в файл вида: - Структура &quot;Спортивная команда&quot;: - название; - город; - количество...

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

20
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.07.2013, 20:07
Студворк — интернет-сервис помощи студентам
Можно добавить ещё вывод нужной записи и изменение оценок нужной записи:
Кликните здесь для просмотра всего текста
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
void find_student();   // поиск и вывод нужной записи о студенте 
void change_student(); // изменить оценки в записи о студенте
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    int k = 0; // пункт меню
    do
    {
        printf("\n1. Добавить запись\n");
        printf("2. Показать все записи\n");
        printf("3. Сортировать записи\n");
        printf("4. Найти запись\n");
        printf("5. Удалить запись\n");
        printf("6. Изменить оценки в записи\n");
        printf("7. Выход\n");
        
        scanf("%d", &k);
                getc(stdin);
        switch(k)
        {
            case 1: add_student(); 
                break;
            
            case 2: show_Students(); 
                break;
            
            case 3: sort_Students();
                break;
                
            case 4: find_student();
                break;  
                        
            case 5: delete_student();
                break;
 
            case 6: change_student();
                break;
        }
    } while(k != 7 );
 
    return 0;
}
 
void find_student()
{
    FILE *fin;
    fin = fopen("Students.txt", "rb"); // открываем файл для бинарного чтения
    if (!fin) printf("\nДанных не существует.\n\n"); // если файла не существует
    else
    {
        int n = count_students(fin); // количество записей в файле
        if (n == 0)
        {
            printf("\nДанных не существует.\n\n");
            return;
        }
 
        printf("Введите Ф.И.О. студента для поиска:\n");
        struct student s_find;
        
        printf( "\nФамилия: "); gets(s_find.family);
        printf( "Имя: ");       gets(s_find.name);      
        printf( "Отчество: ");  gets(s_find.otchest);  
       
        int i;
        int j = 0;
        int flag = 0;
        struct student temp;
        for (i = 0; i < n; ++i) // чтение записей и вывод на экран нужной
        {  
            read_student(&temp, fin);
            if (compare_students(temp, s_find))
            { 
                flag = 1; // если найдена нужная запись, то устанавливаем flag
                printf("     %d\n\n", ++j);
                out_student(&temp); // выводим найденную запись
            }
        }
        fclose(fin);
        
        if (flag == 0) printf("\nТакая запись не найдена!\n");
    }
}
 
 
void change_student()
{
    int n; // количество записей в буфере
    struct student *buffer = read_to_buffer(&n); // создание буфера и чтение в него данных из файла
    if (!buffer) return;
   
    printf("Введите Ф.И.О. студента:\n");
    struct student s_change;
        
    printf( "\nФамилия: "); gets(s_change.family);
    printf( "Имя: ");       gets(s_change.name);      
    printf( "Отчество: ");  gets(s_change.otchest);  
       
    int flag = 0;
    int q = 0;
    int i;
    for (i = 0; i < n; ++i) // поиск в буфере записи для изменения
    {  
        if (compare_students(buffer[i], s_change))
        { 
            flag = 1; // если найдена нужная запись, то устанавливаем flag
            printf("     %d\n\n", ++q);
            out_student(&buffer[i]); // выводим найденную запись
                   
            printf("\nВведите новые оценки (%d):\n", K);
            int j;
            for (j = 0; j < K; ++j)
            {
                printf( "%d) ", j + 1);
                scanf("%d", &buffer[i].date[j]);
            }
                
            printf("\nЗапись изменена!\n\n");
        }
    }   
    
    if (flag == 1) write_from_buffer(buffer, n); // записываем буфер в файл
    
    if (flag == 0) printf("\nТакая запись не найдена!\n");
    
    free(buffer);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.07.2013, 20:07

Работа с текстовым файлом
В ОБЩЕМ ЗАДАЧА СОСТОИТ В СЛЕДУЮЩЕМ: В текстовом файле информация хранится в следующем виде: ...

Работа с текстовым файлом
Создать текст файл с произвольной инфой. Организовать просмотр содержиммого файла.Организовать чтение и обработку данных из файла в...

Работа с текстовым файлом
Всем привет! Не понимаю что не так Почему работает не корректно? #include &lt;iostream&gt; #include &lt;cstring&gt; ...

Работа с текстовым файлом
Здравствуйте! int main() { char *nameFile; system (&quot;chcp 1251&quot;); cout &lt;&lt;&quot;ââåäèòå íàçâàíèå ôàéëà &quot;; ...

Работа с текстовым файлом
Дан текстовый файл, фразы в котором отделены друг от друга точками, а слова – пробелами и знаками препинания. Удалить из этого файла лишние...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru