以下是你的預處理器(我沒有測試過它;它應該工作):
#define FALSE 0
#define TRUE 1
#define MAX_LINE 1024
char linebuf[MAX_LINE];
FILE *fpout;
int preprocessor(FILE *fpin);
int main(int argc, char **argv)
{
FILE *fpin;
if ((fpout=fopen(argv[2],"w"))==NULL) return(1);
if ((fpin= fopen(argv[1],"r"))==NULL) return(1);
preprocessor(fpin);
fclose(fpin);
fclose(fpout);
return(0);
}
int preprocessor(FILE *fpin)
{
FILE *fpin2;
while (fgets(linebuf,MAX_LINE,fpin))
{
if (strncmp(linebuf,"#include",8)==0) {
char *cp1, *cp2;
if ((cp1= strchr(linebuf+9,'"'))==NULL) {fclose(fpin); return(FALSE);}
if ((cp2= strchr(cp1+1, '"'))==NULL) {fclose(fpin); return(FALSE);}
*cp2='\0';
if ((fpin2=fopen(cp1,"r"))==NULL) {
printf("File '%s' not found.\n",cp1);
return(FALSE);
}
if (!preprocessor(fpin2)) {fclose(fpin2); return(FALSE);}
fclose(fpin2);
}
else fputs(linebuf, fpout);
}
return(TRUE);
}
是的,請把你的嘗試,因爲這將顯示你的準確卡住了。 – anatolyg
當你有一個FILE指針時,如何讀取一行文本,就像fopen()返回的資源一樣。我也會推薦一本關於C的書;比照http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list與一些免費的。 –
它是這樣的:分析問題。設計解決方案。 **閱讀您的工具**的文檔。實施解決方案測試。 – PJTraill