Удаление комментариев из текста - C (СИ)
Формулировка задачи:
вот написал прогу, которая убирает комментарий из текста в стиле /*... */
но есть 1 но, если в 1 строке несколько комментариев, то она убирает только первый...
помогите доработать алгоритм, чтобы убирало все комментарии в строке
#include <stdio.h> #include <string.h> #include <stdlib.h> void comment(FILE*, FILE*, const char* , const char*); void comment (FILE*in, FILE*out,const char *start, const char *finish) { char str[256]; char *c; char *l; int m,k,n,i, flag = 0; while(fgets(str,256,in)!=NULL) { c=strstr(str,start); l=strstr(str,finish); n=strlen(str); if (c!=NULL) { flag = 1; k=strlen(c); for (i=0;i<n-k;i++) { fprintf (out,"%c",str[i]); } } if (l!=NULL) { m=strlen(l); flag = 0; for (i=n-m+2;i<n;i++) { fprintf (out,"%c",str[i]); } } if ((c==NULL) && (l==NULL)) { if (flag == 0) { for (i=0;i<n;i++) { fprintf (out,"%c",str[i]); } } else { fprintf(out, "\n"); } } } } int main (void) { FILE *in; FILE *out; char* finish = "*/"; char* start = "/*"; in = fopen ("input.txt","r"); out = fopen ("output.txt","w"); comment(in,out, start, finish); fclose(in); fclose(out); return 0; }
ну подкиньте идейку, плз... не знаю как доработать
Решение задачи: «Удаление комментариев из текста»
textual
Листинг программы
#include<iostream> #include<conio.h> using namespace std; #define MAX_FILE_LENGHT 512 bool load_file(FILE *in, /*out*/ char *p) { int i = 0; while((*p = fgetc(in)) != EOF && i < MAX_FILE_LENGHT) { ++i; ++p; } *p = '\0'; if(i == MAX_FILE_LENGHT) { printf("Program Too Big"); return false; } return true; } void comment (FILE *in, FILE *out/*,const char *start, const char *finish*/) { char prog[MAX_FILE_LENGHT+1]; char *p; load_file(in, prog); p = prog; while(*p) { if(*p == '/' && *(p+1) == '*') { p += 2; while(!(*p == '*' && *(p+1) == '/')) { if(!*p) { printf("Ошибка!\nНет закрывающей пары(/*)"); _getch(); exit(-1); } p++; } p += 2; } fprintf(out,"%c",*p); p++; } } void main() { FILE *in; FILE *out; in = fopen ("input.txt","r"); out = fopen ("output.txt","w"); comment(in,out); fclose(in); fclose(out); printf(" OK! "); _getch(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д