2014-01-23 4 views
-1
while((x= fgetc(p)) != EOF) 
{ 
    if (x== '/') 
    { 
     while((x = fgetc(p)) != EOF && x != '\n' && x != '/') 
     { 
      comments++; 
     } 
    } 
} 

В основном все, что мне нужно, это способ подсчета всех прокомментированных символов в файле. Так я и пытался, но это не сработало. Помощь очень ценится :).Подсчет прокомментированных символов в случайном файле c

+0

комментарии в c начинаются с '/ *', поэтому вы должны искать это не только один символ '/' – smac89

+0

И заканчивать '* /'. Если вы не проверяете оба символа, вы будете переворачивать состояние каждый раз, когда вы нажимаете деление, или использование '/' внутри строки или комментария. И, как говорит Smac89, конец строки не имеет ничего общего с окончанием комментария C. – keshlam

+2

Добавляя к моему предыдущему комментарию, вы не указали много информации, кроме 'it does not work'. «Не могу ничего сделать», что – smac89

ответ

0

вот пример рубина

cProg = %{#include <stdio.h> 
#include <stdarg.h> 
int main (int argc, char const *argv[]) 
\{ 
    printf("Hello World!");//hello world 
    /* Some Multi 

    Line Comment */ 

    return 0; 

\} 
} 

matches = cProg.match(/\/\/.*$/) 
cStyle = cProg.match(/\/\*[\s\S]*?\*\//) 

print matches[0].length 
print "\n" 
print cStyle[0].length 

редактировать

только что видел, что он должен быть в C .. вы хотите использовать strnstr и получить смещение от последовательного "/*" и "*/", а также "//" к следующему "\n" и вычтите указатели, чтобы получить длину.

+0

полный отказ от ответственности, я только подтвердил, что он работал в этом примере ... и cStyle не жадный –

+0

Спасибо, я думаю. Но можете ли вы быть более конкретным для них, как это можно сделать в C – user3225919

+0

@ user3225919 Вы посмотрели на strnstr()? –

Смежные вопросы