[判断C语言算术表达式的合法性]
基本要求:从文件读入整数 N, 后跟2*N行字符串,两行一组。
每组第一行是预定义的变量(可以多个)。第二行字符串为一个预期的C语言算术表达式。
程序分别判断每个字符串,如果是正确的C语言算术表达式,输出OK;否则,输出其错误类型。如果一个表达式有多个错误,输出一个即可。
用N-S流程图表示处理逻辑(算法)。
设计10个测试数据。
完成解题报告。
没有点思路,请指教,谢谢
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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;
}