fork download
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable : 4996)

bool check[512];
char First[512][512];

char *first(char target[512][512],bool check[],int n) {
	check[n] = true;
	int i=2,k=0,m=0;
	char rule[512][512];
	while (target[n][i]!='\0') {//拆解'|'
		if (target[n][i] != '|') {
			rule[m][k] = target[n][i];
			k++;
		}
		else {
			rule[m][k] = '\0';
			m++;
			k = 0;
		}
		i++;
	}
	rule[m][k] = '\0';
	int firstnum = 0;
	for (int j = 0; j <= m; j++) {
		int l = 0;
		while (rule[j][l] != '\0') {
			if (rule[j][l] > 'z' || rule[j][l] < 'a') {

				First[n][firstnum] = rule[j][l];
				firstnum++;
				break;
			}
			else {
				int num = 0;
				while (target[num][0] != rule[j][l]) {
					num++;
					continue;
				}
				strcat(First[n],first(target, check, num));

			}
			l++;
		}
	}
	return First[n];

}


int main() {

	char input[512][512];
	int RuleNum=0;
	do {
		gets_s(input[RuleNum]);
		check[RuleNum] = false;
		RuleNum++;
	} while (strcmp(input[RuleNum-1], "END_OF_GRAMMAR") != 0);
	int n = 0;
	while (n < RuleNum-1) {
		if (check[n] == false) {
			first(input, check,n);
		}
		n++;
	}

	printf("%d", RuleNum);

	system("pause");
}
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.c:4: warning: ignoring #pragma warning  [-Wunknown-pragmas]
 #pragma warning(disable : 4996)
 
prog.c:6:1: error: unknown type name ‘bool’; did you mean ‘_Bool’?
 bool check[512];
 ^~~~
 _Bool
prog.c:9:35: error: unknown type name ‘bool’; did you mean ‘_Bool’?
 char *first(char target[512][512],bool check[],int n) {
                                   ^~~~
                                   _Bool
prog.c: In function ‘main’:
prog.c:58:3: warning: implicit declaration of function ‘gets_s’; did you mean ‘getenv’? [-Wimplicit-function-declaration]
   gets_s(input[RuleNum]);
   ^~~~~~
   getenv
prog.c:59:20: error: ‘false’ undeclared (first use in this function); did you mean ‘fclose’?
   check[RuleNum] = false;
                    ^~~~~
                    fclose
prog.c:59:20: note: each undeclared identifier is reported only once for each function it appears in
prog.c:65:4: warning: implicit declaration of function ‘first’ [-Wimplicit-function-declaration]
    first(input, check,n);
    ^~~~~
prog.c:72:2: warning: ignoring return value of ‘system’, declared with attribute warn_unused_result [-Wunused-result]
  system("pause");
  ^~~~~~~~~~~~~~~
stdout
Standard output is empty