C++读取文件的相关错误
时间:2011-12-18
来源:互联网
一下是我的代码,目的是把txt文件中的一个3*7的数组(元素间有空格)读入到p[i][j]这个二维数组中,但是运行的时候报错,不知道怎么回事
ifstream ifile;
char **p=new char*[3];
for(int i=0;i<3;i++)
p[i]=new char[7];
memset(p,0,21);
int k=0;
ifile.open ("D:\\b.txt",ios::in);
for(int i=0;i<3;i++)
for(int j=0;j<7;j++)
ifile>>p[i][j];
/////////下面是我用来测试数据的正确性的,
for(int i=0;i<3;i++)
for(int j=0;j<7;j++)
cout<<p[i][j];
return 0;
ifstream ifile;
char **p=new char*[3];
for(int i=0;i<3;i++)
p[i]=new char[7];
memset(p,0,21);
int k=0;
ifile.open ("D:\\b.txt",ios::in);
for(int i=0;i<3;i++)
for(int j=0;j<7;j++)
ifile>>p[i][j];
/////////下面是我用来测试数据的正确性的,
for(int i=0;i<3;i++)
for(int j=0;j<7;j++)
cout<<p[i][j];
return 0;
作者: lantingyaoyi 发布时间: 2011-12-18
我觉得可能是算法错误。我的设计是,读文件的时候,一行行的读,把每行读到一维数组里,读完后在分解数组到二维数组。
作者: herichcq 发布时间: 2011-12-18
我改成这样之后,程序输出不是地址就是全部是0,把我郁闷死了,不知道怎么回事啊!
{
ifstream ifile;
int *q=new int[50];
memset(q,0,200);
int k=0;
ifile.open ("D:\\b.txt",ios::in);
{
for(int i=0;i<3;i++)
for(int j=0;j<7;j++)
{
ifile>>q[k++];
}
}
/////////下面是我用来测试数据的正确性的
for(int i=0;i<50;i++)
cout<<q[k]<<" ";
return 0;
}
{
ifstream ifile;
int *q=new int[50];
memset(q,0,200);
int k=0;
ifile.open ("D:\\b.txt",ios::in);
{
for(int i=0;i<3;i++)
for(int j=0;j<7;j++)
{
ifile>>q[k++];
}
}
/////////下面是我用来测试数据的正确性的
for(int i=0;i<50;i++)
cout<<q[k]<<" ";
return 0;
}
作者: lantingyaoyi 发布时间: 2011-12-18
如果楼主的编译器支持变长数组,可以不用动态定义,觉得那好麻烦。。。不过c++ primer 建议不要那么用。
c语言来说,C99是支持变长数组的。(c primer plus)
c语言来说,C99是支持变长数组的。(c primer plus)
作者: c87527124 发布时间: 2011-12-18
看看这个,模仿一下。
C/C++ code
matric.txt的内容是这样子的。
C/C++ code
C/C++ code
#include <iostream> #include <fstream> using namespace std; // read a array from a file int ReadArrayFromFile(const char* filename, int** array) { ifstream InputFileStr; int i = 0; InputFileStr.open(filename, ios::in); if (!InputFileStr) { cout << "Open File " << filename << " error" << endl; return 0; } for (int i = 0; i < sizeof(array)/sizeof(array[0]);) { while (InputFileStr >> array[i][0] >> array[i][1] >> array[i][2] >> array[i][3] >> array[i][4] >> array[i][5] >> array[i][6]) i++; } return 1; } #define COL 7 #define ROW 3 int main() { int** array = new int*[ROW]; for (int i = 0; i < ROW; i++) array[i] = new int[COL]; if (ReadArrayFromFile("matric.txt", array)) { for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) cout << array[i][j] << ' '; cout << endl; } system("pause"); return 0; } else { cout << "can't read from file matric.txt" << endl; system("pause"); return -1; } }
matric.txt的内容是这样子的。
C/C++ code
1 2 3 4 5 6 7 2 3 4 5 6 7 8 3 4 5 6 7 8 9
作者: linwhwylb 发布时间: 2011-12-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28