#include <string>
void main()
{
bool yh_d = false;//單引號
bool yh_s = false;//雙引號
bool zs_at = false;//@
bool zs_left = false;//((
bool zs_right = false;//))
char line[1024];
int l_line = 0;//log line
int p_line = 0;//phy line
int pro_num = 0;//program num
int end_pro = 0;//1表示program輸入結束,2表示整個輸入結束
while(fgets(line,1024,stdin) !=NULL)
{
if(strncmp(line,"##",2)==0)
{
if(p_line >0)
pro_num ++;
if(zs_left == true)
{
printf("Unter... block comment at the end of ...\n");
}
printf("Pro %d contains %d log lines and %d phy lines\n",pro_num,l_line,p_line);
p_line = 0;
l_line = 0;
break;
}
if(strncmp(line,"#",1) ==0)
{
if(p_line>0)
pro_num ++;
if(zs_left == true)
{
printf("Unter... block comment at the end of ...\n");
}
printf("Pro %d contains %d log lines and %d phy lines\n",pro_num,l_line,p_line);
p_line = 0;
l_line = 0;
continue;
}
int len = strlen(line);
p_line ++;
if(line[len-1] == '\n')
line[len-1] = 0;
bool end_line = false;
int i;
for(i = 0;line[i]!= 0; ++i)
{
if(line[i] == '#')
{
pro_num ++;
if(zs_left == true)
{
printf("Unter... block comment at the end of ...\n");
}
printf("Pro %d contains %d log lines and %d phy lines\n",pro_num,l_line,p_line);
p_line = 0;
l_line = 0;
end_pro = 1;
if(line[i+1] =='#')
{
end_pro = 2;
break;
}
}
else if(line[i] == '\'' && yh_s == false && zs_at == false && zs_left == false)
{
yh_d = (yh_d == false?true:false);
}
else if(line[i] == '\"' && yh_d == false && zs_at == false && zs_left == false)
{
yh_s = (yh_s == false?true:false);
}
else if(line[i] == '@' && yh_s == false && yh_d == false && zs_left == false)
{
zs_at = (zs_at == false?true:false);
}
else if(line[i] == '(' &&line[i+1] =='(' && yh_s == false && yh_d == false && zs_at == false)
{
zs_left = (zs_left == false?true:false);
}
else if(line[i] == ')' &&line[i+1] == ')' && yh_s == false && yh_d == false && zs_at == false)
{
if(zs_left = true)
{
zs_left = false;
}
else
{
//printf("error:%d,%d\n",p_line,l_line);
}
}
else if(line[i] == ';' && yh_s == false && yh_d == false && zs_left == false && zs_at == false)
{
end_line = true;
l_line ++;
}
/*if(end_line)
{
if(yh_d == true || yh_s == true)
printf("Unter sting in line %d",p_line);
end_line = false;
yh_d = false;
yh_s = false;
}*/
}
end_line = true;
if(end_line)
{
if(yh_d == true || yh_s == true)
printf("Unter sting in line %d\n",p_line);
end_line = false;
yh_d = false;
yh_s = false;
}
if(end_pro == 2)
break;
}
}
/*基本功能已經實現,可以復制了然後運行,妳可以自己再優化下代碼*/