当前位置:编程学习 > C/C++ >>

怎样解决C语言程序'不能创建输出文件'

编译一个计算器程序之后 运行结果 显示“unable to create output file'xy.txt'” 不能创建输出文件‘xy.txt’其它语法没有错误 请问这样的问题该怎样解决... 高手帮忙 谢谢、、、
追问:你回答的内容太多了  我只需要解决的办法  怎样才能解决那个错误,我是先建立的一个xy.txt文件 然后讲源代码录入进去的,然后用TC将xy.txt文件导入进去,一运行之后就出现了那种错误。我编译环境是 XP
答案:一、 实验环境

汇编语言程序设计的实验环境如下:

1.     硬件环境

微型计算机(Intel x86系列CPU)一台

2.     软件环境

n     Windows98/2000/XP操作系统

n     任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等)

n     汇编程序(MASM.EXE或TASM.EXE)

n     连接程序(LINK.EXE或TLINK.EXE)

n     调试程序(DEBUG.EXE或TD.EXE)

文本编辑器建议使用EDIT或NOTEPAD,汇编程序建议使用MASM.EXE,连接程序建议使用LINK.EXE,调试程序建议使用TD.EXE。

二、 上机实验步骤

注:以下步骤适用于除汇编语言程序设计的实验一到实验四外的所有实验(实验一到实验四仅使用TD.EXE)。

1.确定源程序的存放目录

建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。如果没有创建过此目录,请用如下方法创建:

通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。

请把MASM.EXE、LINK.EXE、DENUG.EXE和TD.EXE都拷贝到此目录中。

2.建立ASM源程序

建立ASM源程序可以使用EDIT或NOTEPAD(记事本)文本编辑器。下面的例子说明了用EDIT文本编辑器来建立ASM源程序的步骤(假定要建立的源程序名为HELLO.ASM),用NOTEPAD(记事本)建立ASM源程序的步骤与此类似。

在Windows中点击桌面左下角的“开始”按钮→选择“运行”→在弹出的窗口中输入“EDIT.COM  C:\ASM\HELLO.ASM”,屏幕上出现EDIT的编辑窗口,如图1所示。

                         图1  文本编辑器EDIT的编辑窗口

窗口标题行显示了EDIT程序的完整路径名。紧接着标题行下面的是菜单行,窗口最下面一行是提示行。菜单可以用Alt键激活,然后用方向键选择菜单项,也可以直接用Alt-F打开File文件菜单,用Alt-E打开Edit编辑菜单,等等。

如果键入EDIT命令时已带上了源程序文件名(C:\ASM\HELLO.ASM),在编辑窗口上部就会显示该文件名。如果在键入EDIT命令时未给出源程序文件名,则编辑窗口上会显示“UNTITLED1”,表示文件还没有名字,在这种情况下保存源程序文件时,EDIT会提示输入要保存的源程序的文件名。

编辑窗口用于输入源程序。EDIT是一个全屏幕编辑程序,故可以使用方向键把光标定位到编辑窗口中的任何一个位置上。EDIT中的编辑键和功能键符合Windows的标准,这里不再赘述。

源程序输入完毕后,用Alt-F打开File菜单,用其中的Save功能将文件存盘。如果在键入EDIT命令时未给出源程序文件名,则这时会弹出一个“Save as”窗口,在这个窗口中输入你想要保存的源程序的路径和文件名(本例中为C:\ASM\HELLO.ASM)。

 注意,汇编语言源程序文件的扩展名最好起名为.ASM,这样能给后面的汇编和连接操作带来很大的方便。

3.用MASM.EXE汇编源程序产生OBJ目标文件

源文件HELLO.ASM建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ文件)。具体操作如下:

 方法一:在Windows中操作

用资源管理器打开源程序目录C:\ASM,把HELLO.ASM拖到MASM.EXE程序图标上。

 方法二:在DOS命令提示符窗口中操作

选择“开始”→“程序”→“附件”→“命令提示符”,打开DOS命令提示符窗口,然后用CD命令转到源程序目录下,接着输入MASM命令:

I:>C:<回车>

C:>CD \ASM<回车>

C:\ASM>MASM HELLO.ASM<回车>

操作时的屏幕显示如图2所示。

                      图2  在DOS命令提示符窗口中进行汇编

不管用以上二个方法中的哪个方法,进入MASM程序后,都会提示让你输入目标文件名(Object filename),并在方括号中显示默认的目标文件名,建议输入目标文件的完整路径名,如:C:\ASM\HELLO.OBJ〈回车〉。后面的两个提示为可选项,直接按回车。注意,若打开MASM程序时未给出源程序名,则MASM程序会首先提示让你输入源程序文件名(Source filename),此时输入源程序文件名HELLO.ASM并回车,然后进行的操作与上面完全相同。

                          图3  有错误的汇编过程例子

如果没有错误,MASM就会在当前目录下建立一个HELLO.OBJ文件(名字与源文件名相同,只是扩展名不同)。如果源文件有错误,MASM会指出错误的行号和错误的原因。图3是在汇编过程中检查出两个错误的例子。在这个例子中,可以看到源程序的错误类型有两类:

 警告错误(Warning Errors)。警告错误不影响程序的运行,但可能会得出错误的结果。此例中无警告错误。

 严重错误(Severe Errors)。对于严重错误,MASM将无法生成OBJ文件。此例中有两个严重错误。

在错误信息中,园括号里的数字为有错误的行号(在此例中,两个错误分别出现在第6行和第9行),后面给出了错误类型及具体错误原因。如果出现了严重错误,你必须重新进入EDIT编辑器,根据错误的行号和错误原因来改正源程序中的错误,直到汇编没有错为止。

 注意,汇编程序只能指出程序的语法错误,而无法指出程序逻辑的错误。

4.用LINK.EXE产生EXE可执行文件

在上一步骤中,汇编程序产生的是二进制目标文件(OBJ文件),并不是可执行文件,要想使我们编制的程序能够运行,还必须用连接程序(LINK.EXE)把OBJ文件转换为可执行的EXE文件。具体操作如下:  

 方法一:在Windows中操作

用资源管理器打开源程序目录C:\ASM,把HELLO.OBJ拖到LINK.EXE程序图标上。

 方法二:在DOS命令提示符窗口中操作

选择“开始”→“程序”→“附件”→“命令提示符”,打开DOS命令提示符窗口,然后用CD命令转到源程序目录下,接着输入LINK命令:

I:>C:<回车>

C:>CD \ASM<回车>

C:\ASM>LINK HELLO.OBJ<回车>

操作时的屏幕显示如图4所示。

                         图4  把OBJ文件连接成可执行文件

不管用以上二个方法中的哪个方法,进入LINK程序后,都会提示让你输入可执行文件名(Run file),并在方括号中显示默认的可执行文件名,建议输入可执行文件的完整路径名,如:C:\ASM\HELLO.EXE〈回车〉。后面的两个提示为可选项,直接按回车。注意,若打开LINK程序时未给出OBJ文件名,则LINK程序会首先提示让你输入OBJ文件名(Object Modules),此时输入OBJ文件名HELLO.OBJ并回车,然后进行的操作与上面完全相同。

如果没有错误,LINK就会建立一个HELLO.EXE文件。如果OBJ文件有错误,LINK会指出错误的原因。对于无堆栈警告(Warning:NO STACK segment)信息,可以不予理睬,它不影响程序的执行。如链接时有其它错误。须检查修改源程序,重新汇编、连接,直到正确。

5.执行程序

建立了HELLO.EXE文件后,就可以直接在DOS下运行此程序,如下所示:

C:>HELLO〈回车〉

C:>

程序运行结束后,返回DOS。如果运行结果正确,那么程序运行结束时结果会直接显示在屏幕上。如果程序不显示结果,我们如何知道程序是否正确呢?例如,这里的HELLO.EXE程序并未显示出结果,所以我们不知道程序执行的结果是否正确。这时,我们就要使用TD.EXE调试工具来查看运行结果。此外,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时也要使用TD.EXE。

你在执行程序前自己创建一个xy.txt就OK了

你看你的xy.txt是否在创建了  你先在你的源文件里新建一个xy.txt;

上一个:求助,谁能帮我编一个c语言程序
下一个:急求设计一个学生成绩管理系统 c语言 急!!!!

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,