Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Невозможно найти или открыть файл PDB https://www.cyberforum.ru/ cpp/ thread253715.html
Код программы // FtoM.cpp: определяет точку входа для консольного приложения. // /*Проект 1.1 это программа преобразует фунты в метры. */ #include "stdafx.h" #include <iostream> #include...
C++ Сравнение двух каталогов
Здравствуйте! Помогите, пожалуйста, создать программу. Нужно сравнить два каталога, каждый представляет из себя таблицу с названием объекта и двумя его координатами (в одном каталоге 200 объектов,...
Как копировать залочены эксплорером файлы C++
Интернет эксплорер загружая поточное видео (файлы с YouTube и пр. сайтов), в каталоге временных файлов создаёт временный flv файл, который и несёт в себе видеоинформацию...Вобщем если его копировать...
C++ Менеджер паролей Доброго всем дня. Выдали мне задание написать менеджер паролей для интернета не зависящий от браузера. Может подскажите с чего начать или литературу какую? )) Первым делам стоит вопрос, как... https://www.cyberforum.ru/ cpp/ thread252692.html
C++ Наложение текстур в Directx9 https://www.cyberforum.ru/ cpp/ thread251695.html
Читаю книгу Горгонова(глава 10), не получается загрузить текстуру и освещение не работает, Visual Studio 2010: #pragma comment(lib,"d3d9.lib") #pragma comment(lib,"d3dx9.lib") #include...
C++ С чего начать изучение Win API?
Программирую в Visual Studio 2005 c++
C++ Печать Word.doc в выбранных подпапках
добрый день! помогите пожалуйста с небольшой программой: форма по адресу основной папки вычисляет количество и названия внутренних папок, по ним создает расширенный список папок с чекбоксами напротив...
C++ прямой изменение содержимого консоли Народ, я пишу программу в консольном режиме, каким образом можно изменить содержимое консоли, без очистки и изменненого вывода? то есть как отредактировать на прямую буфер косоли? https://www.cyberforum.ru/ cpp/ thread251256.html
C++ Есть ли у кого программа?... https://www.cyberforum.ru/ cpp/ thread250713.html
Очень нужна помощь!!! Мне нужна создать програму в C++ для курсовой - Вывести все данные о ПК!!! Может у кого есть... напишыте пожалуйста... я в прогромировании полный ноль!!!
C++ Плагины для торрент-клиентов Всем привет! У меня большая просьба ко всем кто писал плагины для торрент-клиентов - поделитесь пожалуйста опытом! Мне бы понять с чего начать и где искать. Буду благодарен за любую информацию. https://www.cyberforum.ru/ cpp/ thread250501.html
Формучанин
362 / 293 / 41
Регистрация: 02.11.2010
Сообщений: 1,234
15.03.2011, 20:43 0

Удалить комментарии из файла. Помогите найти ошибку.

15.03.2011, 20:43. Просмотров 3509. Ответов 10
Метки (Все метки)

Ответ

если тебе встречается слеш (\) то нужно записать в выходной файл два символа подряд(если state позволяет)
а вот эти две строки:
C
1
2
 if  (c == '"') State = Normal;//Является ли c двойной кавычкой?
if ( (c == '\'') || (c == '\"')) State=StrState;//является ли c одинарной или двойной кавычкой?
логически эквивалентны:
C
1
if ( (c == '\'') || (c == '\"')) State=StrState;
state никогда не примет значение Normal.

чтобы проверять на слеш нужно использовать такую конструкцию:
C
1
if (c=='\\') ...
Добавлено через 10 минут
корректно будет так:
C
1
2
3
if  (c == '"') State = Normal;
 
                        if ( (c == '\'') || (c == '\"')) State=StrState;
заменить на:

C
1
2
3
4
5
6
7
if (c=='"') State= Normal; else
if  (c == '\\') 
{
if ((c=fgetc(fi)) == EOF) {/*Дописать сюда код завершения цикла, достигнут конец файла*/}
fputc(c,fo);
continue;
}
Добавлено через 6 минут
C
1
2
3
4
5
case Comment:
                        if ( c=='*')
                                State=EndComment;
                        else State=Comment;
                        break;
если после комментария /* встретится чтото типа a*=2, то программа посчитает это за конец комментария.
Нужно сравнивать два символа: */

Добавлено через 4 минуты
C
1
2
3
4
5
6
7
8
9
 case Normal:
                        State=Normal;
                        if (c == '/')         /* если встретили слэш, */
                                 State = Slash;     /* то перешли в соответствующее состояние */
                        else if (c == '"')
                                 {State=StrState;
                                 fputc(c,fo);}
                                 else fputc(c,fo);
                        break;
можно сократить до:
C
1
2
3
4
5
6
7
8
9
10
 case Normal:
                        
                        if (c == '/')         /* если встретили слэш, */
                                 State = Slash;     /* то перешли в соответствующее состояние */
                        else {
                                 fputc(c,fo);
                                 if (c == '"') State=StrState;
                              }
                                 
                          break;
Добавлено через 2 минуты
C
1
return 0;      /* а это зачем? */
А это затем чтобы вызывающее приложение знало код, который вернула твоя программа. 0=успех.

Добавлено через 3 минуты
C
1
  if (State=Slash)   fputc(c,fo);
это условие выполнятся будет либо всегда либо никогда, в зависимости от численного значения Slash.
Правильно будет так:
C
1
  if (State==Slash)   fputc(c,fo);
Добавлено через 2 минуты
107 строка:
C
1
     else State = OneComment;
не несёт смысловой нагрузки, и её можно вобще удалить

Вернуться к обсуждению:
Удалить комментарии из файла. Помогите найти ошибку.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2011, 20:43
Готовые ответы и решения:

Удалить значение из базы.Не работает форма.Помогите найти ошибку?
&lt;form id=&quot;myform&quot; &gt;&lt;select id=&quot;mymenu&quot; &gt;&lt;option value=&quot;Алексей СИБВТ&quot;&gt;Алексей...

Удалить комментарии из файла
Здравствуйте, написал программу, которая удаляет комментарии в файле #include &lt;iostream&gt;...

Необходимо удалить комментарии из html файла
Задание: Написать скрипт, который будет удалять все комментарии из html файла. Я написал код, но...

Удалить из текстового файла комментарии вида {comments}
uses crt; var f,g:text; p1,p2:byte; nf,ng,s,st:string; begin clrscr; write('Имя файла...

10
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.