Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/56: Рейтинг темы: голосов - 56, средняя оценка - 4.79
Марсианин)))
713 / 46 / 15
Регистрация: 18.07.2010
Сообщений: 637

Удаление символа NULL в текстовом файле

13.12.2012, 19:49. Показов 11191. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята подскажите более рациональный метод удаление символов(слова) NULL.
Вот мой код, использую потоки:
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <fstream>
#include <iostream>
#include <cstdlib>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
using std::ifstream;
using std::ofstream;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   ifstream fin;
   ofstream fout;
 
   //  Открываем файл для обработки
   fin.open("avz_sysinfo.xml");
   if(fin.fail())
   {
      RichEdit1->Lines->Add("не удалось открыть avz_sysinfo.xml");
      exit(1);
   }
 
   // открываем файл для переноса редактируемого текста
   fout.open("avz_sysinfo1.xml");
   if(fout.fail())
   {
      RichEdit1->Lines->Add("nou avz_sysinfo1.xml");
      exit(1);
   }
   char next;
 
   while(!fin.eof())
   {
      fin.get(next);
      // проверяем на NULL символ.
      if (next != NULL)
      {
         fout << next;
      }
 
   }
   fin.close();
   fout.close();
}
//---------------------------------------------------------------------------
Мне если можно, что бы сохранение шло в один и тот же файл.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.12.2012, 19:49
Ответы с готовыми решениями:

Удаление заданного символа в текстовом файле
Здавствуйте. Существует ли в cmd команда для удаления конкретного символа из текстового файла. Пример: есть текстовый файл 1.txt с...

Поиск символа в текстовом файле
Дан текстовый файл F, необходимо подсчитать количество символов &quot;(&quot; в файле.

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

18
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 17:55
О чем речь ? о строке "NULL" или о символе '\0' он же 0 он же NULL-символ, он же конец строки ?
0
Марсианин)))
713 / 46 / 15
Регистрация: 18.07.2010
Сообщений: 637
14.12.2012, 20:04  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
О чем речь ? о строке "NULL" или о символе '\0' он же 0 он же NULL-символ, он же конец строки ?
В некоторых текстовых фалах попадается символ NUL. Если смотреть в нотепад++ то будет написано NUL? ели вы простом текстовом редак. то просто квадратики. 343 символ и 344. Смотри вложение просто не знаю как объяснить.
Вложения
Тип файла: txt avz_sysinfo.txt (1.0 Кб, 49 просмотров)
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 20:23
Ну это и есть '\0' или 0 просто Notepad++ его отображает как NUL
Миниатюры
Удаление символа NULL в текстовом файле  
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 20:28
Как понимаю это забокопоренный файл по тому как NUL там не должен быть
0
Марсианин)))
713 / 46 / 15
Регистрация: 18.07.2010
Сообщений: 637
14.12.2012, 20:28  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ну это и есть '\0' или 0 просто Notepad++ его отображает как NUL
Вот этот NUL и нужно удалить.
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 20:31
Ну так NUL-м обычно обозначается конец файла, поэтому он может определятся как EOF
0
Марсианин)))
713 / 46 / 15
Регистрация: 18.07.2010
Сообщений: 637
14.12.2012, 20:34  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Как понимаю это забокопоренный файл по тому как NUL там не должен быть
Всё верно. И если его открыть в классе XMLDocument то выдаст ошибку.

Цитата Сообщение от Avazart Посмотреть сообщение
Ну так NUL-м обычно обозначается конец файла.
А какже тогда он открылся в нотепад++ если это конец файла))) Он бы скопировал бы только до нул, и все.
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 21:00
Как то так

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
//---------------------------------------------------------------------------
bool is_null(char ch) { return ch=='\0'; }
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
system("color 0a");// зеленый
system("chcp 1251");
using namespace std;
 
ifstream ifs("avz_sysinfo.txt");
vector<char> vc;
 
ifs.unsetf( std::ios_base::skipws );
remove_copy_if( istream_iterator<char>(ifs),
                                istream_iterator<char>(),
                                back_inserter(vc),is_null);
ifs.close();
 
ofstream ofs("avz_sysinfo-corrected.txt"); // ну либо тот-же файл
copy(vc.begin(),vc.end(),ostream_iterator<char>(ofs) ) ;
 
 
system("pause");
return 0;
}
//---------------------------------------------------------------------------
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.12.2012, 21:47
Или попроще...
C++
1
2
3
4
5
6
7
    fstream fs( "avz_sysinfo.txt" );
    string s;
    for ( TCHAR ch; fs.get( ch ); ch != 0 ? s += ch : s );
    fs.clear( );
    fs.seekp( 0 );
    fs.write( s.c_str( ), s.size( ) );
    fs.close( );
1
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 21:52
А зачем TCHAR то?

И есть ли уверенность что при write все сначала сотрется до нулевой длинны, а потом будет писаться ?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.12.2012, 22:06
Цитата Сообщение от Avazart Посмотреть сообщение
А зачем TCHAR то?
Вопрос про переменную или ее тип?
А про уверенность... вот ТС попробует - там и узнаем.
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 22:13
Про тип конечно ...
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.12.2012, 22:20
Ну, мало ли, как сказал один умный человек - уточняйте термины, иначе вы рискуете говорить о разных вещах одними словами...

TCHAR для совместимости, если я так напишу, то мне уже будет до лампочки, на чем компилировать и юникод или его отсутствие ни для кого не станут проблемой.
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 22:24
Цитата Сообщение от BRcr Посмотреть сообщение
TCHAR для совместимости, если я так напишу, то мне уже будет до лампочки, на чем компилировать и юникод или его отсутствие ни для кого не станут проблемой.
Ну как раз нет.. по тому как STL просто не поймет ваш Unicode там однозначно должен быть char так как поток char-овый

Добавлено через 2 минуты
Для широких символов wfstream

Может конечно как-то,где-то через шаблоны указать TCHAR, но я чет не нашел..
Да и у вас там std::string хотя должен быть std::basic_string<TCHAR> не говоря уже про _T'\0' ( или как там через макросы?)
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.12.2012, 22:31
А, точно... поток не скушает, иначе тогда файл открывать надо...
0
Марсианин)))
713 / 46 / 15
Регистрация: 18.07.2010
Сообщений: 637
15.12.2012, 10:28  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Как то так
А в не консоль можно как то сделать?
Цитата Сообщение от BRcr Посмотреть сообщение
А, точно... поток не скушает, иначе тогда файл открывать надо...
Значит ваш код можно и НЕ пробовать?
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
15.12.2012, 13:34
Цитата Сообщение от Xank Посмотреть сообщение
Значит ваш код можно и НЕ пробовать?
TCHAR на char замени...
Цитата Сообщение от Xank Посмотреть сообщение
А в не консоль можно как то сделать?
Т.е. ? В оконном приложении ?

Добавлено через 1 минуту
Собственно в чем проблема помести код main() в кнопку...
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
15.12.2012, 16:47
Цитата Сообщение от Xank Посмотреть сообщение
Значит ваш код можно и НЕ пробовать?
Код рабочий. Да и пробовать следует все без вопросов, на полностью готовеньком далеко не уедешь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2012, 16:47
Помогаю со студенческими работами здесь

Поиск символа в текстовом файле
Как можно организовать поиск введенного символа в txt файле?

В текстовом файле подсчитать количество вхождений каждого символа
В написании проги на ассемблере, суть общения на форуме хотелось бы самому с вашими подсказками написать прогу. 1.Открыть файл(пусть там...

После каждого символа в текстовом файле добавить пробел
Прошу вашей помощи, нужно после каждого символа в текстовом файле добавить пробел. У меня есть целых два варианта и не один не работает...

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

Как удалить все после последнего символа в текстовом файле?
Подскажите пожалуйста как с помощью perl удалить все после последнего символа (.) в текстовом файле? Например, есть файл 1.txt В нем: ...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »