作业帮 > 综合 > 作业

本人新手,RT

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/23 22:28:32
本人新手,RT

这个程序是打开一个名为words的文件.读取输入的字串,写入words文件,直到输入一个空行时结束输入.然后,在屏幕上打印出words文件的内容,即之前输入的那些字串.最终,关闭words文件,程序结束.
1-2行:头文件定义
3行:宏变量MAX定义
4行:main()程序体定义
6-7行:定义一个文件句柄指针fp,一个字符串words
9-13行:以“a+"方式,打开一个名为words的文件,相当于在words文件后追加的方式.
14-15行:打印两行提示
16-17行:从标准输入读取输入的字串到words中,然后写入文件中
18行:另一行提示,准备显示文件内容
19行:句柄指针回到words文件的开始处
20-21行:向标准输出,显示words文件的内容
22-23行:关闭文件句柄指针
24行:返回
再问: 谢谢大神,我还想问几个问题,给你加分这个是运行结果。 它是不是运行了两次的结果放在一起了,而不是一次的?第二个wile语句里,fscanf函数,是不是不需要键盘输入内容,而是直接读取文件的内容?那个fscanf函数是不是一个单词一个单词读取的?而且前一个语句已经返回文件起始处了,他读取的是整个文件的内容,那为什么参数只是words数组呢?
再答: 由于fopen时用的是“a+",所以是用“追加”方式,每次运行时,都会把当次输入的文字记录下来,所以你看到的是两次结果叠加的。如果fopen时用“w",则每次都会新建文件。第二个while语句,是直接从文件句柄读取,所以不需要键盘输入。fscanf是从文件中读取,scanf是从标准输入读,两个函数用法是类似的。关键在于“%s“,就是一次读一个字串(相当地一个词)。你看到的fscanf是在循环内,每次循环读一次、输入一次,直到读到文件尾部。所以每一次读一个词到words数组中即可。
再问: 2,3,我明白了。1.问题我没表述清楚,我想问的是这个程序是不是手动运行了两次,这个程序只设定键盘输入一次可是运行结果那个图显示输入了两次。我猜是不是这样的: words文件一开始为空他是a+新建的,然后运行程序输入字符串,使words不为空,内容为字符串1,屏幕显示字符串1。然后再一次手动运行程序,再输入另一组字符串2,程序显示字符串1,字符串2
再答: 程序逻辑只是在每一次运行时,接收键盘输入,直到输入一个空行为止。所以:(1)如果运行一次,执行结果就显示第一次输入的内容;(2)如果运行两次,执行结果就显示第一次、第二次输入的内容;(3)如果运行三次,执行结果就显示三次的输入内容。(4)运行n次,会把n次输入的内容全部都显示出来。(5)原因就是fopen用了a+,会一直向上次的文件追加内容。第一次执行前words文件不存在,会新建一个words文件。(6)如果你在执行一次或几次后,手工把words文件删除了,则下次运行时,会重新生成新的words文件,此时执行结果,就只会显示当次的输入内容了。