源代码:
/**/
/************************************************************
Copyright (C), 1998-2006, Rx. Co., Ltd.
FileName: mainApp.cpp
Author: longronglin
Version : 1.0
Date: 2006-10-10
Description:
Function List:
1. int main()
History:
<author> <time> <version > <desc>
longronglin 2006/10/10 1.0 modify xxx .
***********************************************************/
#include < stdio.h >
/**/ /*
* 返回1为正确执行
* 主函数
*
*/
int main()
... {
//用于接收输入输出文件名
char ScanIn[100],ScanOut[100];
//用于指向输入输出文件的指针
FILE *fIn,*fOut;
//ch为每次读入的字符
char ch;
printf("请输入源程序文件名(包括路径):");
scanf("%s",ScanIn);
printf("请输入词法分析输出文件名(包括路径):");
scanf("%s",ScanOut);
if ((fIn=fopen(ScanIn,"r"))==NULL)
...{
printf(" 打开输入文件出错! ");
return(0);
}
if ((fOut=fopen(ScanOut,"w"))==NULL)
...{
printf(" 创建输出文件出错! ");
return(0);
}
ch=getc(fIn);
while(ch!=EOF)
...{
printf("%c",ch);
fprintf(fOut,"%c",ch); //输出整数符号
ch=getc(fIn);
if (ch==EOF) break;
}
fclose(fIn);//关闭输入输出文件
fclose(fOut);
return (1);
}
Copyright (C), 1998-2006, Rx. Co., Ltd.
FileName: mainApp.cpp
Author: longronglin
Version : 1.0
Date: 2006-10-10
Description:
Function List:
1. int main()
History:
<author> <time> <version > <desc>
longronglin 2006/10/10 1.0 modify xxx .
***********************************************************/
#include < stdio.h >
/**/ /*
* 返回1为正确执行
* 主函数
*
*/
int main()
... {
//用于接收输入输出文件名
char ScanIn[100],ScanOut[100];
//用于指向输入输出文件的指针
FILE *fIn,*fOut;
//ch为每次读入的字符
char ch;
printf("请输入源程序文件名(包括路径):");
scanf("%s",ScanIn);
printf("请输入词法分析输出文件名(包括路径):");
scanf("%s",ScanOut);
if ((fIn=fopen(ScanIn,"r"))==NULL)
...{
printf(" 打开输入文件出错! ");
return(0);
}
if ((fOut=fopen(ScanOut,"w"))==NULL)
...{
printf(" 创建输出文件出错! ");
return(0);
}
ch=getc(fIn);
while(ch!=EOF)
...{
printf("%c",ch);
fprintf(fOut,"%c",ch); //输出整数符号
ch=getc(fIn);
if (ch==EOF) break;
}
fclose(fIn);//关闭输入输出文件
fclose(fOut);
return (1);
}
运行时内存图:
可以发现最后是2个m的连续内存。其实是com的一个m结尾。同时在调试时发现EOF的值是0xff。