의 어휘 분석기를 작성하고, 소스 코드는 여기 -내가이 프로그램은 토큰으로 변환하는 입력으로 다른 프로그램을 읽어 C. 의 어휘 분석기를 만들려고하고 C
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main() {
FILE *fp;
char read[50];
char seprators [] = "\n";
char *p;
fp=fopen("C:\\Sum.c", "r");
clrscr();
while (fgets(read, sizeof(read)-1, fp) !=NULL) {
//Get the first token
p=strtok(read, seprators);
//Get and print other tokens
while (p!=NULL) {
printf("%s\n", p);
p=strtok(NULL, seprators);
}
}
return 0;
}
그리고있다 Sum.c의 내용은 다음과 같습니다.
#include <stdio.h>
int main() {
int x;
int y;
int sum;
printf("Enter two numbers\n");
scanf("%d%d", &x, &y);
sum=x+y;
printf("The sum of these numbers is %d", sum);
return 0;
}
올바른 출력을 얻지 못하고 출력 대신 공백 화면 만 표시됩니다.
아무도 내가 잘못 가고 있다고 말할 수 있습니까? 미리 감사드립니다.
파일이 정상적으로 열리도록하십시오. 당신은 결코 그것을 체크하지 않고, 런타임에서의 현재 작업 디렉토리는 당신이 생각하는 것과 다르다. 특히 IDE 또는 다른 툴에서 실행하는 경우에 그렇다. 'fopen()'이 성공했는지 확인하고, 그렇지 않으면'perror ("파일을 열지 못했습니다.");와 종료하십시오. 적어도 그게 문제라는 것을 알게 될 것입니다. – WhozCraig
토큰을 인쇄하려면'seprators' 값의 선택이''\ n ";'가 잘못되었습니다. –
어휘 분석기를 실제로 만들고 싶다면 Flex (http://en.wikipedia.org/wiki/Flex_lexical_analyser) – Michael