比赛 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;
}