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

Удаления нужной строчки из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти последовательность номеров удаляемых спортсменов http://www.cyberforum.ru/cpp-beginners/thread1126641.html
Добрый день! Подскажите пожалуйста, правильно ли я написал программу, а то преподаватель не согласен с ним. Вот условие задачи: По кругу стоят N спортсменов. Каждый имеет свой номер. Начиная с некоторого номера, по кругу удаляется каждый К-спортсмен , после чего круг смыкается. Найти последовательность номеров удаляемых спортсменов. Вот сам код: #include "stdafx.h" #include <iostream>
C++ Как правильно компилировать программы? Компилятор MinGW. Создаю простое окно с использованием WinAPI и windows.h. Компилирую через g++ с флагом -mwindows. По сути в программе минимум информации, ничего кроме окна, никаких текстов, никаких функций и прочее, но исполняемый файл уже весит пару десятков килобайт, при этом на компьютерах, которых нету библиотеки libstd (или как то так) он вообще не работает. Для того чтобы можно было... http://www.cyberforum.ru/cpp-beginners/thread1126606.html
C++ Дана последовательность целых чисел, за которой следует 0
Помогите пожалуйста решить простенькие задачки в C++. 1.)Дана последовательность целых чисел, за которой следует 0. Найти количество четных элементов этой последовательности. 2.) Благодарю заранее.
Поиск хешированием C++
Здравствуйте! Помогите создать программу, поиск хешированием. Искал в интернете ничего путного не нашел. Нужно чтобы с клавиатуры ввести ключ, а он вывел массив ключей и результат.
C++ Обработка слов строки без массива слов http://www.cyberforum.ru/cpp-beginners/thread1126594.html
В программе нужно обработать введенную строку , ввести некоторую разменость и вывести слова , рамерность которых больше за введенную . Программа то готовая , но нужно её реализовать без массива слов . Зараннее благодарен #include "stdafx.h" #include <iostream> #include <cstdlib> #include <cstdio> #include <string> using namespace std; char s; // исходная строка const int n=20;
C++ Рекурсивная функция. Возвести число в степень путём многократного умножения самого на себя помогите #include<iostream.h> int muFunc(int x ,int y ); int main () { short int x , y , z; cout<<" vedit chislo : " ; cin >>x ; подробнее

Показать сообщение отдельно
Fyria94
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 23
22.03.2014, 15:39     Удаления нужной строчки из файла
Доброе время суток ! Мне понадобилась функция, которая по двум параметрам (1ый и 2ой символ строчки ) находит нужную строчку и удаляет ее . У меня два варианта как это сделать , они в общем схожи.
1) Перезаписывать все строчки в другой файл , кроме удаляемой , потом переименовать ( я не знаю как переименовывать , но это отдельный вопрос )
2) Что бы файл перезаписывал сам себя , кроме нужной строчки.
В общем , используя 1ый вариант он находит и удаляет нужную строчку если цикл обхода файла стоит "обходить до элемента 0 -( искусственно ставил последним ноль , остальные не нули ) " , но если ставить цикл while(!feof(f)) , он доходит до последнего символа и почему-то еще раз заходит и перезаписывает последнюю строчку. В строчке 5 элементов. Вот например вот так удаляем по первым символам 8 7 :
исходные данные в файле
12345
67893
87234
28737

после перезаписи в другом файле
12345
67893
28737
28777

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
void DelStr( int hand, int num){
 
    int k=1;
    int mas[2];
    int l=0;
    FILE *f;
    FILE *c;
    FILE *g;
    
 
    f = fopen("text.txt", "r+");
    c = fopen("text1.txt", "w");
    //g = fopen("text.txt", "r+");
    
 
    while(!feof(f)){
//Сканируем первые два символа строчки
    fscanf(f,"%1d",&mas[0]);
    fscanf(f,"%1d",&mas[1]);
// Если это та строчка которую нужно удалить, то сканируем до конца строчку ( пропускаем ее )
    if(mas[0]==hand && mas[1]==num){
        //fseek(f,5,1);
    for(int j=0;j<3;j++)
      fscanf(f,"%1d",&k);
    }
//Если нет , то перезаписываем строчку в другой файл 
    else{
    
    fprintf(c,"%1d",mas[0]);
    fprintf(c,"%1d",mas[1]);
 
    for(int j=0;j<3;j++){
    fscanf(f,"%1d",&k);
    fprintf(c,"%1d",k);
    }
    
 
    fprintf(c,"\n");
    }
    
}
 
    fclose(f);
    fclose(c);
}
в общем проблема в обходе файла , потому что если обходить пока не будет сканированный элемент = 0 , и 0 поставить последним , то все работает , но в целом у меня могут нули встречаться и раньше , строго не судите , я только начинаю программировать, как мозги работают так код и пишу. Заранее за ответ спасибо , я просидел больше 9ти часов уже с этой функцией(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru