计算c程序中注释中的字符

时间:2014-01-18 18:13:45

标签: c count comments character

您好我正在尝试计算如何计算c程序中的注释中的字符。到目前为止,我已经写了一个不起作用的功能,但似乎合乎逻辑。能否请你帮我完成我的任务。我的任务是用评论中的所有字符填充缓冲区,然后计算它们。

void FileProcess3(char* FilePath)
{
    char myString [1000];
    char buffer[1000];
    FILE* pFile;
    int i = 0;
    pFile = fopen (FilePath, "r");
    while(fgets( myString, 1000, pFile) != NULL)
    {
        int jj = -1;

        while(++jj < strlen(myString))
        {
            if ( myString[jj] == '/' && myString[jj+1] == '*')
            {
                check = 1;
                jj++;
                jj++;
            }

            if( check == 1 )
            {
                if ( myString[jj] == '*' && myString[jj+1] == '/')
                {
                    check = 0;
                    break;
                }
                strcat( buffer, myString[jj] );
            }
        }
    }
    printf(" %s ", buffer );
    fclose(pFile);
}

2 个答案:

答案 0 :(得分:0)

strcat()连接(NUL终止)字符串,所以这肯定是错误的 (并且由于第二个参数的类型错误,应该给出编译器警告):

strcat( buffer, myString[jj]);

您可以执行类似

的操作
buffer[length] = myString[jj];
buffer[length+1] = 0;
length++;

其中length是一个初始化为零的整数,用于跟踪当前长度。 当然,您应该根据缓冲区的可用大小来检查长度 避免缓冲区(!)溢出。

如果您的目的只是计算字符,那么您不必复制 他们到一个单独的缓冲区。只需增加一个计数器。

您还应该注意fgets()不会从中移除换行符 输入。因此,如果您不想包含换行符,则必须检查 在伯爵。

答案 1 :(得分:0)

E.g。

    int i = 0, check = 0;

...
            if( check == 1 )
            {
                if ( myString[jj] == '*' && myString[jj+1] == '/')
                {
                    check = 0;
                    break;
                }
                buffer[i++] = myString[jj];
            }
        }
    }
    buffer[i]='\0';/* add */