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

Удаление комментариев из файла

15.04.2013, 21:01. Просмотров 2485. Ответов 3
Метки нет (Все метки)


есть набросок функции, которая удаляет из файла все комментарии(с поддержкой многострочности.).
помогите исправить ошибки и правильно реализовать.

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
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
 
int DelComments()
{
int i=0;
int c;
char *string=(char*)malloc(256);
scanf("%s", string);
while(true)
{
if ((strstr(string, "{"))&&(strstr(string, "}")))
{ int StartComment=strstr(string, "{")-string;
for (i=(strstr(string, "}")-string)+1; i<=strlen(string); i++)
{ string[StartComment]=string[i];
StartComment++;
}
else
{
breake;
}
return 1
}
}
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2013, 21:01
Ответы с готовыми решениями:

Удаление комментариев
Здравствуйте! Пишу программу для удаления комментариев из программ. Вот кусочек кода. Проблема...

Удаление комментариев из текста
вот написал прогу, которая убирает комментарий из текста в стиле /*... */ но есть 1 но, если в 1...

Удаление комментариев в программном коде Си
Удаление комментариев В языке Си комментарии к исходному коду начинаются с двух символов /* и...

Удаление всех комментариев из программного кода на С
Условие: напишите программу для удаления всех комментраиев из программы на С. Так же нужно...

3
3080 / 2401 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
15.04.2013, 22:08 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
char *firstChar(char *src, char sim)
{
   for (; *src != '\0'; src++)
      if (*scr == sim)
         return src;
 
   return NULL;
}
 
char *lastChar(char *src, char sim)
{
   char *tmp = NULL;
 
   for (; *src != '\0'; src++)
      if (*scr == sim)
         tmp = src;
 
   return tmp;
}
 
char *delCom(char *s)
{
   char *begCom = NULL, *endCom = NULL;
 
   begCom = firstChar(src, '{');
   endCom = lastChar(src, '}');
 
   if (begCom && endCom)
   {
      strcpy(begCom, endCom+1);
      return s;
   }
 
   return NULL;
}
0
0 / 0 / 0
Регистрация: 30.05.2011
Сообщений: 5
16.04.2013, 20:14  [ТС] 3
kazak, а можешь пожалуйста пояснить как работает функция ?
0
Модератор
Эксперт Python
28373 / 15272 / 3011
Регистрация: 12.02.2012
Сообщений: 25,003
Записей в блоге: 4
17.04.2013, 11:11 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Что-то непонятно... С каких это пор комментарий в C отделялся фигурными скобками? Это же не Паскаль... Вот код удаления комментариев из текста на C:

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
#include <stdio.h>
#include <string.h>
#include <process.h>
 
int main(int argc, char* argv[])
{
    FILE *fi,*fo;
 
    char finp[256];
    char fout[256];
 
    char c,p;
    int sig_comm;
 
    strcpy(finp,argv[1]);
    strcpy(fout,argv[2]);
 
    if ((fi=fopen(finp,"r")) == NULL)
    {
        printf("File %s not found!\n",finp);
        exit(-1);
    }
 
    if ((fo=fopen(fout,"w")) == NULL)
    {
        printf("File %s cannot be opened!\n",finp);
        exit(-1);
    }
 
    p=fgetc(fi);
    sig_comm=0;
 
    while (1)
    {
        c=fgetc(fi);
 
        if (c==EOF) break;
 
        if ((sig_comm == 0) && (c == '*') && (p == '/')) 
        {
            fseek(fo,-1L,SEEK_END);
            sig_comm=1;
        }
        
        if (sig_comm == 0) {fputc(p,fo); printf("%c",p);}
    
 
        if ((sig_comm == 1) && (c == '/') && (p == '*')) 
        {
            c=fgetc(fi);
            sig_comm=0;
        }
        
        p=c;
        
    }
 
    if (sig_comm == 0) fputc(p,fo);
 
    fclose(fi);
    fclose(fo);
 
    return 0;
}

Запускать так: Имя_exe Исходный_файл Выходной_файл
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2013, 11:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Удаление комментариев из файла
Решил написать программу которая удаляет комментарии из файла и пишет текст в другой файл, но она...

Удаление комментариев из текстового файла
Доброго времени суток) Необходимо задать в исходном тексте программы имя некоторого файла с...

Удаление комментариев из текстового файла
Помогите пожалуйста! нужно написать программу для удаления комментариев из текстового файла.

Поиск и удаление комментариев из файла
Добрый вечер. Язык С++ изучаю недавно, помогите, пожалуйста, написать программу. Задача программы:...


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

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

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