注册 登录
编程论坛 C++教室

大家好这里有新人的一个小小问题^_^

Bett 发布于 2015-08-17 09:16, 895 次点击
书上的一个fopen版文件输入输出标程,如下:
#include<cstdio>
int main() {
    FILE *fin,*fout;
    fin=fopen("in.txt","rb");
    fout=fopen("out.txt","wb");
    int temp,sum=0;
    while (fscanf(fin,"%d",&temp)==1)
    {
        sum+=temp;
    }
    fprintf(fout,"%d",sum);
    fclose(fin); fclose(fout);
    return 0;
}
程序本身没有问题,源代码所在同目录下有"in.txt"文件,内有输入数据"12 24 a"(百度上说想要停止输入需要在最后输入一个字符,标准输入输出答案正确,文件就出错),编译无问题,运行时会弹出对话框:
“"0x77c10ac4"指令引用的"0x0000000c"内存。该内存不能为"read"。”
求解答。
12 回复
#2
wp2319572015-08-17 09:33
以下是引用Bett在2015-8-17 09:16:47的发言:


程序本身没有问题,源代码所在同目录下有"in.txt"文件,内有输入数据"12 24 a"(百度上说想要停止输入需要在最后输入一个字符,标准输入输出答案正确,文件就出错),编译无问题,运行时会弹出对话框:
“"0x77c10ac4"指令引用的"0x0000000c"内存。该内存不能为"read"。”
求解答。


这是完全看不明白啊
#3
Bett2015-08-17 09:39
回复 2楼 wp231957
就是想问问为什么fopen版的文件输入输出时总是出错(不管输出文件总为‘0’),联赛的话书上说重定向版(freopen)有局限而且有些竞赛不能用,如果一直不成功的话会选用文件输入输出流(实在不行的话因为不是很喜欢iostream),如果无法给出解决方法还请您推荐一种适用的文件输入输出方法(联赛用)。
#4
wp2319572015-08-17 09:44
回复 3楼 Bett
还是说说你具体想干嘛吧 (举例说明)

啥玩意文件输入输出总是错  听都没听过
#5
Bett2015-08-17 09:51
回复 4楼 wp231957
标程是一个简单的累加的程序,原问题是:将输入的一些数据(不确定个数)相加,最后输出结果,要求用文件输入输出。
#6
Bett2015-08-17 10:04
加油!

[ 本帖最后由 Bett 于 2015-8-17 10:25 编辑 ]
#7
Bett2015-08-17 10:12
加油!

[ 本帖最后由 Bett 于 2015-8-17 10:25 编辑 ]
#8
wp2319572015-08-17 10:36
试试这个代码

程序代码:
#include <stdio.h>

int main()
{
    FILE *fin,*fout;
    fin=fopen("in.txt","rb");
    fout=fopen("out.txt","wb");
    int s=0;
    int tmp=0;
    while(!feof(fin))
    {
        int res=fscanf(fin,"%d",&tmp);
        if (res == -1) break;
        s+=tmp;
    }
    fprintf(fout,"%d",s);
    fclose(fin);
    fclose(fout);
    return 0;
}
#9
Bett2015-08-17 10:52
回复 8楼 wp231957
请问这是用C的编译器编译通过的吗?Dev-C++表示就算去掉了输入文件里的字母,仍弹出原文中的对话框,输出仍为空。(百度说这种情况是因为虚拟内存溢出,却没有给出改进方法)
#10
Bett2015-08-17 11:00
回复 8楼 wp231957
编译是通过的。
#11
wp2319572015-08-17 11:09
8楼的代码 测试环境如下(通过编译  通过链接  通过测试案例运行)

1.编译环境  vs2010+winxp
2.输入文件  ①  纯数字 数字与数字之间空格隔开  文件以数字结束
            ②  纯数字 数字与数字之间空格隔开  文件以回车(换行)结束 可以是n个回车
以上2种输入文件均能通过测试
#12
Bett2015-08-17 14:59
回复 11楼 wp231957
改了无数遍之后发现windows xp环境下显示的文件名是不带".txt"的,于是我设置的文件名变成了"in.txt.txt",更改文件名后后已编译通过。还有谢谢版主提供的C语言的方法:P
#13
wp2319572015-08-17 15:13
回复 12楼 Bett
这是windows基础问题  需要自己努力
1