Я написал код, чтобы удалить комментарии из файла программы C, и распечатать вывод на консоль:Удаление комментариев из файла и его печати на консоли
#include <stdio.h>
#include <stdlib.h>
void incomment(FILE *fp);
void rcomment(int c, FILE *fp);
void echo_quote(int c, FILE *fp);
int main() {
FILE *fp;
fp = fopen("temp.c", "r");
int c;
while ((c = getc(fp)) != EOF) {
rcomment(c, fp);
}
return 0;
}
void incomment(FILE* fp) {
int c, d;
c = getc(fp);
d = getc(fp);
while (c != '*' && d != '/') {
c = d;
d = getc(fp);
}
}
void echo_quote(int c, FILE *fp) {
int d;
putchar(c);
while ((d = getc(fp)) != c) {
putchar(d);
if (d == '\\')
putchar(getc(fp));
}
putchar(d);
}
void rcomment(int c, FILE *fp) {
int d;
if (c == '/') {
if ((d = getc(fp)) == '*')
incomment(fp);
else
if (d == '/') {
putchar(c);
rcomment(d, fp);
} else {
putchar(c);
putchar(d);
}
} else
if (c == '\'' || c == '"')
echo_quote(c, fp);
else
putchar(c);
}
Однако для следующего ввода:
#include<stdio.h>
/* Author : XYZ
* Date : 21/1/2016
*/
int main()
{
int a; ///variable a
printf("/*Hi*/");
return 0;
}
ВЫВОД:
#include<stdio.h>
Date : 21/1/2016
*/
int main()
{
int a; ///variable a
printf("/*Hi*/");
return 0;
}
Может кто-то указать на ошибку в коде. Кажется, он отлично работает для комментариев в кавычках. Но не для комментариев одной строки.
«Может кто-то указать на ошибку в коде». Используйте отладчик, чтобы помочь вам это выяснить. Изучение использования отладчика будет стоить вашего времени и быть более полезным для вас, чем просто отлаживать его для вас. – kaylum
боковой узел: никогда не записывайте дату в этом формате. Это может быть неправильно прочитано, день меньше 32, лучше использовать ISO8601. – 12431234123412341234123