标题:关于输入输出测试时出现的问题
只看楼主
HenryLin8
Rank: 1
等 级:新手上路
帖 子:38
专家分:4
注 册:2012-10-12
结帖率:88.89%
已结贴  问题点数:20 回复次数:8 
关于输入输出测试时出现的问题
各位高手:
 您好!
 本人是C++新手,正在边个二维数据分析的项目,用的是C++2010,
 目的是把一个存有二维数据的制表符分隔的TXT文档读入后,把运算的二维结果输出到名为result的TXT文档中。
 测试用的二维数组是10行10列的只有0和1的数据。
 我正在先测试输入输出部分,还没写数据分析部分,代码如下:
程序代码:
#include <iostream>

 #include <fstream>

 //#include <stdio.h>
 #include <ctime>

 using namespace std;

 int main()

 {

 long start,finish;

 start=clock();

 ifstream sfile("sdata.txt",ios::in); //输入部分
//FILE *sdata;

 //sdata=fopen("sdata.txt","r");
 const unsigned short row=10,col=10;

 unsigned short r,c;

 unsigned short s[row][col];

 for(r=0;r<row,r++;)
   for(c=0;c<col;c++)
   sfile>>s[r][c];

 sfile.close();

 //unsigned short (*sp)[col];

 //sp=s;

 //fclose(sdata);
 ofstream rfile("result.txt",ios::out); //输出部分
for(r=0;r<row;r++)
   for(c=0;c<col;c++)
   {
   rfile<<s[r][c]<<" ";
   if (c=col-1) cout<<endl;
   }

 delete[] s;

 rfile.close();

 double duration;

 finish=clock();

 duration=(double)(finish-start)/CLOCKS_PER_SEC;

 cout<<"duration="<<duration<<endl;

 return 0;

 }
代码编译可以通过,但是运行(不调试)时就出现附件中的对话框。

 请各位高手指点迷津!
 谢谢!


[ 本帖最后由 HenryLin8 于 2012-10-12 12:50 编辑 ]
搜索更多相关主题的帖子: color 制表符 result 
2012-10-12 12:48
HenryLin8
Rank: 1
等 级:新手上路
帖 子:38
专家分:4
注 册:2012-10-12
得分:0 
我添加的图片怎么看不到

本人使用:
win7旗舰版 MS OFFICE2010 C++2010
虽然脑子不好使,但喜欢玩编程。
2012-10-12 12:51
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
得分:10 
if (c==col-1)

我只发现了这个错误。

My life is brilliant
2012-10-12 12:51
HenryLin8
Rank: 1
等 级:新手上路
帖 子:38
专家分:4
注 册:2012-10-12
得分:0 
回复 3楼 lz1091914999
我运行后出现的对话框内容是:
Debug Assertion failed!
Program:E:\Documents\C++\test\Debug\test.exe
File:f:\dd\vctools\crt_bld\self_x86\crt\src\dbgdel.cpp
Line:52
Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
由于添加图片的功能好像用不了,我把对话框内容打出来了。
我改了关系运算符==后也照样出现同样对话框。
我也把代码中的两个txt文档路径改到Debug文件夹下也照样会出现。
请指点迷津!
也请指点这论坛添加不了附件的迷津!
谢谢!

本人使用:
win7旗舰版 MS OFFICE2010 C++2010
虽然脑子不好使,但喜欢玩编程。
2012-10-12 13:07
cyxhxm
Rank: 2
等 级:论坛游民
帖 子:6
专家分:40
注 册:2012-10-11
得分:5 
//delete[] s 去掉
数组s不是分配在堆内存上面
2012-10-12 13:55
HenryLin8
Rank: 1
等 级:新手上路
帖 子:38
专家分:4
注 册:2012-10-12
得分:0 
回复 5楼 cyxhxm
不需要释放数组s的内存空间吗?

本人使用:
win7旗舰版 MS OFFICE2010 C++2010
虽然脑子不好使,但喜欢玩编程。
2012-10-12 14:06
cyxhxm
Rank: 2
等 级:论坛游民
帖 子:6
专家分:40
注 册:2012-10-11
得分:5 
你这个数组的内存空间是在程序的栈上面,是随着函数的结束自动就不存在了,不需要程序员负责。
2012-10-12 14:32
HenryLin8
Rank: 1
等 级:新手上路
帖 子:38
专家分:4
注 册:2012-10-12
得分:0 
回复 7楼 cyxhxm
result.zip (648 Bytes)
[attach]65437[/attach]谢谢指点!
我改了一下代码,如下:
程序代码:
#include <iostream>
#include <fstream>
#include <ctime>
using namespace std;
int main()
{
    long start,finish;
    start=clock();
    ifstream sfile("sdata.txt",ios::in);
    const unsigned short row=10,col=10;
    unsigned short r,c;
    unsigned short s[row][col];
    for(r=0;r<row;r++)
        for(c=0;c<col;c++)
            sfile>>s[r][c];
    sfile.close();
    ofstream rfile("result.txt",ios::out);
    for(r=0;r<row;r++)
        for(c=0;c<col;c++)
        {
            rfile<<s[r][c];
            if(c==col-1) rfile<<endl;
        }
    sfile.close();
    double duration;
    finish=clock();
    duration=(double)(finish-start)/CLOCKS_PER_SEC;
    cout<<"duration="<<duration<<endl;
    return 0;
}
编译通过,运行(不调试)正常,可是在result.txt文档中没有内容,这是怎么回事?请指教!
我是创建test的win32控制台项目,两个txt文档是放在test根目录下的。
谢谢!


[ 本帖最后由 HenryLin8 于 2012-10-12 15:05 编辑 ]

本人使用:
win7旗舰版 MS OFFICE2010 C++2010
虽然脑子不好使,但喜欢玩编程。
2012-10-12 15:03
HenryLin8
Rank: 1
等 级:新手上路
帖 子:38
专家分:4
注 册:2012-10-12
得分:0 
回复 8楼 HenryLin8
知道啦,是sdata文档放错地方啦

本人使用:
win7旗舰版 MS OFFICE2010 C++2010
虽然脑子不好使,但喜欢玩编程。
2012-10-12 15:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-383005-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.419123 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved