您好我正在尝试计算如何计算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);
}
答案 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 */