[判断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; }