求助,评测脚本出错
  • 板块灌水区
  • 楼主KevTheDev
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/7/12 21:53
  • 上次更新2023/11/4 14:58:17
查看原帖
求助,评测脚本出错
324095
KevTheDev楼主2021/7/12 21:53

rt,代码:

#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>

#define AC 0
#define WA 1
#define TLE 2
#define MLE 3
#define RE 4

char buffer[1073741824];
char oufLine[1073741824], ansLine[1073741824];

#ifdef WIN32
	#define VIEWER "type"
#else
	#define VIEWER "cat"
#endif

void strip(char *s)
{
	for (int i = strlen(s) - 1; i >= 0; i--)
	{
		if (!isprint(s[i]) || isspace(s[i]))
			s[i] = '\0';
	}
}

int main(int argc, char **argv)
{
	if (argc < 5)
	{
		printf("Missing argument.\nUsage: ./judge <filename> <inputfile> <outputfile> <time limit> <memory limit>\n");
		return -1;
	}

	freopen("output1.temp", "w", stdout);
	sprintf(buffer, "%s %s | procgov --timeout %s -q %s", VIEWER, argv[2], argv[4], argv[1]);
	int ret1 = system(buffer);
	freopen("output2.temp", "w", stdout);
	sprintf(buffer, "%s %s | procgov --timeout %s -q %s", VIEWER, argv[2], argv[5], argv[1]);
	int ret2 = system(buffer);

	if (!ret1)
		return TLE;
	if (!ret2)
		return MLE;
	if (ret1 || ret2)
		return RE;

	FILE *ouf = fopen("output1.temp", "r");
	FILE *ans = fopen(argv[3], "r");

	while (fgets(oufLine, 1073741824, ouf) != NULL && fgets(ansLine, 1073741824, ans) != NULL)
	{
		strip(oufLine);
		strip(ansLine);
		if (oufLine[0] == '\0' && ansLine[0] == '\0')
			continue;
		if (strlen(oufLine) != strlen(ansLine))
			return WA;
		int len = strlen(oufLine);
		for (int i = 0; i < len; i++)
		{
			if (oufLine[i] != ansLine[i])
				return WA;
		}
	}

	fclose(ouf);
	fclose(ans);
	fclose(stdin);
	fclose(stdout);
	return AC;
}

报错:

程序“judge.exe”无法运行: 指定的可执行文件不是此操作系统平台的有效应用程序。所在位置 行:1 字符: 1
+ ./judge
+ ~~~~~~~。
所在位置 行:1 字符: 1
+ ./judge
+ ~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (:) [], ApplicationFailedException
    + FullyQualifiedErrorId : NativeCommandFailed
2021/7/12 21:53
加载中...