Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
plju6
0 / 0 / 0
Регистрация: 04.11.2010
Сообщений: 10
1

Из символьного файла создать новый файл, не содержащий комментарии

31.03.2011, 11:23. Просмотров 853. Ответов 1
Метки нет (Все метки)

из символьного файла на языке Си создать новый файл не содержащий комментарии. Имена исходного и результирующего файла указать в командной строке(простую програмку)
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2011, 11:23
Ответы с готовыми решениями:

Создать новый файл, содержащий те же элементы, что и исходный фал, но в обратном порядке
Дано бинарный файл действительных чисел.Для создания использовать file.exe...

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

Создать новый файл, содержащий все слова, отличные от последнего слова
Дан текстовый файл, содержащий последовательность слов. Между соседними словами...

Создать новый файл, содержащий все слова, отличные от последнего слова
Дан текстовый файл, содержащий последовательность слов. Между соседними словами...

Создать файл целых чисел, содержащий номера всех локальных экстремумов исходного файла в порядке убывания.
Дан файл вещественных чисел. Создать файл целых чисел, содержащий номера всех...

1
Attenti_ON
9 / 9 / 3
Регистрация: 17.11.2009
Сообщений: 51
31.03.2011, 13:13 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/* 
 * File:   main.cpp
 * Author: Attenti_ON
 *
 * Created on 31 Март 2011 г., 16:01
 */
 
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string.h>
#include <stdlib.h>
using namespace std;
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
char * del(char * start)
{
    size_t len;
    char * res = new char [len];
    char * result_pos;
    result_pos = res;
    char *r = start;
    int k = 0;
 
for( r = start; *r != '\0';)
{
  while (*r)
  {
    if (*r != '/')
    {
//---пробелы--------------------------------
      if (*r == ' ')
      {
        r++;//смотрим следующий символ
        if (*r == ' ')
        while (*r == ' ') {r++;}
        r--;
      }
//------------------------------------------
//--------отступы---------------------------
      if (*r == '\n')
      {
        *result_pos = *r;
        r++;
        if (*r == '\n')
        {
          while (*r == '\n') r++;
        }
        r--;
        result_pos++;
        r++;
      }
      else
      {
        *result_pos = *r;
        r++; result_pos++;
      }
    }
//-------------------------------------------
//------строки----"//home//dakotta//....."---
    if (*r == '"')
    {
      *result_pos = *r;
      r++; result_pos++;
      while (*r != '"')
      {
        *result_pos = *r;
        r++; result_pos++;
      }
    }
//--------------------------------------------
//---если встречаем символ '/'----------------
    if(*(r) == '/' )
    {
      r++;
      if ((*r != '*') && (*r != '/'))//записываем все подряд
      {
        r--;
        *result_pos = *r;
        r++; result_pos++;
      }
      r--;
 
      r++;
      if (*r == '/')//встретили коммент вида //
      {
        while (*r != '\n') {r++;}
      }
      r--;
 
      r++;
      if (*r == '*')
      {   //удаление /* */
        r++;
        while (*r != '*')
        {r++; k++;}
 
        r++;
        if (*r != '/')//ищем завершение комментария */
        {
          r = r -k-2;
          *result_pos = '\0';
          break;
        }
 
        if (*r == '/')//нашли, перешагнули
        r++;
      }
    }
  }
 break;
}
return res;
}
 
 
int main(int argc, char* argv[])
{
size_t len;
char *str = new char [len];
FILE* fp = fopen("//home//dakotta//Документы//file1.txt","r");
if (fp)
{
  int i=0;
  char ch;
  while((ch = getc(fp)) != EOF)
  str[i++]=ch;
  str[i] = '\0';
  cout << str;
}
else printf("Невозможно открыть файл на чтение.\n");
fclose(fp);
 
char *res = del(str);
cout << endl << endl << "без комментов" << endl << res << endl;
return 0;
}
Вот так вот. С записью результата в файл сам разберешься?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2011, 13:13

Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл
Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый...

Создать файл, содержащий сведения о сотрудниках
Очень прошу вас помочь:help: Я уже 3 ночь бьюсь:wall: Задача: Создать...

Создать файл содержащий сведения о кубиках
1. Создать файл &quot;Кубики&quot;, содержащий сведения о кубиках: размер (длина ребра),...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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