Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2009, 14:17   #1
Flippp
Пользователь
 
Регистрация: 05.03.2009
Сообщений: 62
По умолчанию Удаление строки из файла

Здрасте вообшем надо чтобы программа удаляла определённую строку из txt
файла вот наработки:
Код:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
FILE *fp;
FILE *tp;
FILE *tp1;
using namespace std;
int MAXLENGTH;
void del(char* xek)
{
     if((tp = fopen("file","rb"))==NULL)
     {
            exit(1);
            }
     if((tp1 = fopen("tempfile","w"))==NULL)
     {
             
            exit(1);
            }
     MAXLENGTH = sizeof(tp);
     char buf[MAXLENGTH];
     while(fread(buf,sizeof(buf),1,tp)==1)
     {
     if(strcmp(buf,xek)!=0)
     fwrite(buf,sizeof(buf),1,tp1);
     }
     fclose(tp1);
     fclose(tp);
     
     }
Когда вызываю функцию del(моя строка)
она не удаляет строку почему -то???
просто переписывает весь файл.Помогите!

Последний раз редактировалось Flippp; 12.11.2009 в 14:56.
Flippp вне форума Ответить с цитированием
Старый 12.11.2009, 14:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм...
Я бы не так делал
Я бы считывал побайтно, и считал количиство считанных символов с кодом 13. Если это кол-во равно номеру строки - не писать пока не встретится очередной 13, иначе писать в второй файл.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2009, 15:42   #3
Flippp
Пользователь
 
Регистрация: 05.03.2009
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Хм...
Я бы не так делал
Я бы считывал побайтно, и считал количиство считанных символов с кодом 13. Если это кол-во равно номеру строки - не писать пока не встретится очередной 13, иначе писать в второй файл.
А если я незнаю например номер строки то ,что тогда?
Flippp вне форума Ответить с цитированием
Старый 12.11.2009, 15:52   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я незнаю например номер
А на что ты тогда рассчитываешь?
Что понимается под фразой "Определенная строка"?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2009, 16:13   #5
Flippp
Пользователь
 
Регистрация: 05.03.2009
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А на что ты тогда рассчитываешь?
Что понимается под фразой "Определенная строка"?
Означает что я знаю что это за строка, но незнаю номера.
Т.е номер строки может быть любой,но строка всё время одна и та же.
Вот и мне надо удалить эту строку.
Flippp вне форума Ответить с цитированием
Старый 12.11.2009, 16:16   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а так ты знаешь "содержимое строки"
так?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2009, 16:39   #7
Flippp
Пользователь
 
Регистрация: 05.03.2009
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А-а-а так ты знаешь "содержимое строки"
так?
Да,но незнаю номер строки.
Flippp вне форума Ответить с цитированием
Старый 12.11.2009, 17:38   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Код:
...
while(fgets(buf,sizeof(buf),tp))
{
  if(strcmp(buf,xek))
    fputs(buf,tp1);
}
...
pu4koff вне форума Ответить с цитированием
Старый 12.11.2009, 18:25   #9
Flippp
Пользователь
 
Регистрация: 05.03.2009
Сообщений: 62
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Код:
...
while(fgets(buf,sizeof(buf),tp))
{
  if(strcmp(buf,xek))
    fputs(buf,tp1);
}
...
Странно,но всё равно ,он просто переписывает файл,и не удаляет никакой строки
или может я что - то не так делаю?

Последний раз редактировалось Flippp; 12.11.2009 в 18:39.
Flippp вне форума Ответить с цитированием
Старый 12.11.2009, 18:39   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Flippp Посмотреть сообщение
Странно,но всё равно ,он просто переписывает файл,и не удаляет никакой строки
Может такой строки, как записана в параметре xek, и нет в файле?
Символы 'Б' и 'б' являются разными или может пробелы в конце строки в файле есть.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление строки из файла. Arhe Общие вопросы .NET 4 03.11.2009 12:12
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
Удаление строки из файла Македонский Общие вопросы Delphi 5 29.08.2007 15:40