= =其实阿……这个题目可以很简单:
程序代码:#include
#include
#include
#define N 4096
char buf[N];
int main(void)
{
int i, n;
scanf("%d ", &n);
for (i = 0; i < n; i++)
{
FILE *fp;
strcpy(buf, "main(){int ");
fgets(buf + strlen(buf), N, stdin);
strcat(buf, ";");
fgets(buf + strlen(buf), N, stdin);
strcat(buf, ";}");
fp = fopen("tmp.c", "w");
fwrite(buf, 1, strlen(buf), fp);
fclose(fp);
if (system("gcc -o tmp tmp.c 2>tmp.log") == 0)
printf("OK!\n");
else
{
fp = fopen("tmp.log", "r");
fgets(buf, N, fp);
fgets(buf, N, fp);
puts(buf + 9);
fclose(fp);
}
}
return 0;
}
我的运行结果:
starwing@starwing-desktop:~$ ./a
2
aa,bb,vv
aa=bb+vv;
OK!
aa,cc
aa+cc+dd
错误: ‘dd’未声明 (在此函数内第一次使用)
starwing@starwing-desktop:~$