编译原理实验 源程序的输入和扫描

更新时间:2023-07-25 06:37:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 源程序的输入和扫描

学时数:2

[实验内容]:

1、 编制一个源程序的输入、扫描程序,从文件中每次读入一行到输入缓冲区(可以用字符数组实现);然后从缓冲区中依次取出字符显示在屏幕上。

2、从文件每次读入一行到输入缓冲区的功能(可以用字符数组实现)用一个子程序实现。

[实验目的]:

1、通过编制一个源程序的输入、扫描程序,熟悉和了解从文件中读入数据到输入缓冲区的过程。

[实验步骤]:

(一)准备:确定开发工具,如TC、VC++等;熟悉开发工具;确定被处理的语言的语法特点(初步确定,也可使用现成语言如Pascal、C等)。写好实验报告,编好程序。

(二)上机:输入程序,修改、调试,运行。

1、编程思想:

采用一个子程序实现的形式。

(1)程序判断源文件是否为NULL,如果是,则输出错误提示!如果不是,则进入循环。

(2)调用子程序readbuffer(),每次读入一个字符给字符变量,如果字符变量的内容不是回车符,则把字符变量的内容存入数组buffer(),然后读入下一字符,再判断再存入数组,直到一行全存入数组,然后返回主程序,用输出语句输出刚才存入数组的一行字符;

(3)如果没有到文件尾,则重复第(2)步,直到文件结束,则退出主程序,完成任务!

[程序要求]:

1)如输入如下一段C语言源程序,要求运行编制的输入、扫描程序后输出与输入相同。 main()

{

int a,b ,c;

a = 10; b=20;

c=a+b;

}

例: 输入、扫描程序源代码(参考):

//程序开始:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

//声明头文件

int i;

FILE *fp;

char buffer[256];

//声明变量

int readbuffer() //子程序开始 {

int j=0;

char ch;

//声明变量

while(j<256)

{

ch=fgetc(fp);

if (ch=='\n')

{

i=j;

return 0;

} //if

buffer[j]=ch;

++j;

}

return 1;

} //子程序结束

main() //main()开始

{

if((fp=fopen("d:\\a.c","r"))==NULL) {

printf("THE FILE DOESN’T OPEN!"); exit(0);

}

while(!feof(fp))

{

int j;

j=0;

readbuffer();

while(j<i)

{

printf("%c",buffer[j]);

j++;

}

printf("\n");

getch();

}

fclose(fp);

getch();

} //main()结束

//程序结束

2)当源文件为:

d:\\a.c.。

main()

{

int sum=0,i;

float k;

scanf ("%f plese input (0-100) to total!",&k)

for(i=0;i<k;i++)

sum =sum+i;

}

输出必须与上面输入的原代码相同。

本文来源:https://www.bwwdw.com/article/m3lm.html

Top