#cpp
Есть задачка, на входе дан текст (код программы с комментариями типа /*коммент*/). Нужно вырезать из этого текста комментарии и вернуть. Вот мой пример, но он не работает. Как его можно исправить ?:D #define L 300 int main() { char s1[L]; // Входной текст char s2[L]; // Выходной текст int fl = 0; printf("Введите исходный текст (макс %d симв.): \n", L); gets(s1); printf("Начальный текст: \n"); puts(s1); strcpy(s2,""); int i = 0; while(iОтветы
Ответ 1
Странный кусок, что вы хотели здесь сделать? if (fl == 0) { int j = 0; strcat(s2, &s1[j]); j++; } P.S. #include#include #include const char CMT_START[] = "/*"; const char CMT_END[] = "*/"; static char *remove_comments( const char *string ) { char *cmt; const char *sptr = string; char *copy = malloc( strlen( string ) + 1 ); if( !copy ) { return NULL; } *copy = 0; while( cmt = strstr( sptr, CMT_START ) ) { strncat( copy, sptr, cmt - sptr ); cmt = strstr( cmt + 1, CMT_END ); if( cmt ) { sptr = cmt + sizeof( CMT_END ) - 1; } else { /* Спорный момент: оставлять в строке незавершённый * комментарий или нет. В данном случае он будет * отброшен. */ return copy; } } if( *sptr ) { strcat( copy, sptr ); } return copy; } int main() { char *s = remove_comments( "123 /* 456 */ 789 /* 098 */ abc /*" ); if( s ) { printf( "%s\n", s ); } free( s ); return !s; }
Комментариев нет:
Отправить комментарий