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

Удаление строки из файла\либо удаление самого файла. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Невозможно поместить строку map<string,float>pairs_map; в .h-файл http://www.cyberforum.ru/cpp-beginners/thread37318.html
Делаю проект,есть 3 файла : // project_header.h #ifndef PROJECT_HEADER_H_INCLUDED #define PROJECT_HEADER_H_INCLUDED #include <iostream> #include <map> #include <iterator> #include <string> #include <cctype>
C++ Строковый ввод-вывод. С++ У меня возникла проблема с заданием. Создать текстовый файл F1 не менее, чем из 10 строк и записать в него информацию 1) Скопировать из файла F1 в файл F2 все строки, которые содержат только одно слово. 2) Найти самое длинное слово в файле F2. Заранее благодарна))) http://www.cyberforum.ru/cpp-beginners/thread37316.html
C++ Переход по ссылке
Люди кто знает как в программу добавить переход по ссылке html напимер нажимаеш на button и переходит к конкретной ссылке ;)
Метод Зейделя C++
Ребята, каждый из вас уже делал лабы по матрицам. Если у кого-то есть готовая лаба по методу Зейделя, прошу, напишите ее тут и желательно с комментариями. >>Тут<< можно почитать о методе Зейделя Выручайте :friends: Добавлено через 6 часов 24 минуты 45 секунд Вот думаю, как сделать HTML-страницу, так чтобы можно было вводить размерность матрицу и понимаю, что нет выхода =/ Придется пока...
C++ Объявление шаблона ассоциативного массива map http://www.cyberforum.ru/cpp-beginners/thread37284.html
Необходимо объявить шаблон map таким образом,чтобы в map записывалось второе значение согласно шаблону.Например,у нас пары значений string-int,string-double.Как можно объявить шаблон на такой массив? Имею довольно смутное представление о шаблонах(вообще без понятия),но хотел сказать примерно следующее: template<typename T>map<string,T value>pairs_map;В-общем я не знаю тип второго значения...
C++ Приоритет операторов (расставить скобки) Необходимо расставить скобки в следующем выражении: a==b||a==c&&c<5Объясните расстановку. Я думаю,что сначала вычислится c<5(по приоритету),потом a==b,потом ,если true,a==c,(по приоритету ||)потом ||,а уже последним &&,если выражение слева true.Я прав или ошибаюсь?Как правильно? P.S.Скобки я так и не расставил,а вдруг они повлияют на приоритет вычислений?? С другой стороны,операторы ||,&&... подробнее

Показать сообщение отдельно
groozzz
0 / 0 / 0
Регистрация: 12.05.2009
Сообщений: 26

Удаление строки из файла\либо удаление самого файла. - C++

30.05.2009, 15:12. Просмотров 6999. Ответов 9
Метки (Все метки)

День добрый, вот функция(используемые переменные объявленны ранее):
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
void delete_cruise()
{
    FILE *fout;
open_file("abase.dat");
    char *result;   
    char line[255], find_str[255];
fin=fopen("abase.dat","rt");
    if(fin==NULL)
    cout<<"ЋиЁЎЄ*! “Є*§***л© д*©« *Ґ **©¤Ґ*."<<"\n";//Сообщение об ошибке, если файл не найден
    else
    {
        cout<<"‚ўҐ¤ЁвҐ *®¬Ґа ३б*:"<<char(9);//Введите номер рейса:
        input_part(&Num[0],10);
        while((result=fgets(line,255, fin))!=NULL)
        {
        int len=strlen(line);
                while(len>=0)
                {
                    find_str[len]=line[len];
                    len--;
                }
        strtok(find_str,"   ");
        if(!strstr(find_str, Num))
            {
                printf("%s\n",result);//на время, потом заменю на запись в файл
            }
        }
    fclose(fin);
    remove("abase.dat"); //не удаляет.
    }
 
}
Проблема в следующем. Несмотря на fclose - файл не удаляется.
Вообще задача состоит в удалении строки с найденным значением Num(в первом поле).
Пробовал через tmpfile() создать новый файл и вести запись строк не удовлетворяющих условию поиска в него, сообщений об ошибке нет, но при попытке чтения из этого "временного файла" не выводит никакой информации, какие-то 3-4 посторонних символа и всё.

З.Ы. Как показала практика - невозможно открыть файл для чтения и сразу писать в него? То есть я не могу найденную строку удалить из исходного файла, не прибегая к посторонним?
Собственно, перепробовав множество различных вариантов - остановился на создании нового фала, в который будет производится запись, а затем удалении оригинала и переименовании созданного.

Добавлено через 17 минут 15 секунд
Так, по поводу удаления разобрался, дело было в функции
C++
1
open_file("abase.dat");
которая конфликтовала с простым открытием. После этого файл закрылся. Теперь интересует только возможность работы именно с временным, а не промежуточным файлом(tmpfile()) или по возможности редактировании текущего
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru