比赛 |
20110722 |
评测结果 |
C |
题目名称 |
解析程序 |
最终得分 |
0 |
用户昵称 |
苏轼 |
运行时间 |
0.000 s |
代码语言 |
Pascal |
内存使用 |
0.00 MiB |
提交时间 |
2011-07-22 11:54:40 |
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <cstring>
const int MAXL=505;
char now[MAXL],*str=now;
char buf[MAXL],*nbuf=buf;
bool begin,end,begino;
void reset()
{
begin=end=begino=false;
}
void wrong()
{
printf("Wrong Format\n");
exit(0);
}
void output()
{
if (begino)
for(char *i=now;i<str;i++)
if (*i=='\n' || *i=='"' || *i==',')
wrong();
nbuf+=sprintf(nbuf,"%s\n",now);
memset(now,0,sizeof(now));
str=now;
reset();
}
int main()
{
freopen("parser.in","r",stdin);
freopen("parser.out","w",stdout);
char ch;
while((ch=getchar())!=EOF)
{
if (ch=='\n')
{
if (begin)
if (end)
output();
else
*str++=ch;
else
output();
}
else if (ch==' ' || ch==' ')
{
if (begin)
{
if (!end)
*str++=ch;
}
else
if (begino)
*str++=ch;
}
else if (ch=='"')
{
if (begin)
if (end)
{
*str++=ch;
end=false;
}
else
end=true;
else
if (begino)
wrong();
else
begin=true;
}
else if (ch==',')
{
if (begin)
if (end)
output();
else
*str++=ch;
else
output();
}
else
{
if (begin)
if (end)
wrong();
else
*str++=ch;
else
{
begino=true;
*str++=ch;
}
}
}
printf("%s",buf);
return 0;
}