c++文件读写的一个小问题

intbianma[500];ifstreaminf("codefile.txt");if(!inf)cout<<"wrong";for(intj=0;j<x;j++)i... int bianma[500];
ifstream inf("codefile.txt");if(!inf)cout<<"wrong";
for(int j=0;j<x;j++)
inf>>bianma[j];
inf.close();
文件里面是数字010110111为什么读不进数组里面?
展开
 我来答
splashchaos
2012-11-19 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3662万
展开全部
看你的程序似乎是要把010110111这个“数”一位一位地存到bianma[]中, 如果是这样, 那么这个程序有几个问题:
① 文件是流的方式打开的, 就是说文件内容如何, 取决于你的程序的解读。 010110111对程序而言,更像是字符串, 你按int读取, int有范围限制, 转换后, 被读成1011011, 前面的0被舍去, 后面的1被舍去, for循环其实只读了1次。 因此最起码, 你的数字直接应该用空格分开,即: 0 1 0 1 1 0 1 1 1 那么for循环会执行9次, 分别读入bianma[0]~bianma[8]。
② 对流的读取操作, 一般应该是while(!inf.eof()) {....} 这种方式的, 很少用for, 因为一般是读到流的尾巴, 自然结束。 即使要记数, 也是while里面作的。
③ 对文件的处理, 应该尽量都按字符串按行读取, 然后再作处理, 转换也好, 还是其它的转存。 这样最安全。 因此要事不该格式, 你应该:
...
int bianma[500];
char sline[128] = "\0";

ifstream inf("new_codefile.txt");

if (!inf)
{
cout << "wrong" << endl;
return (1);
}

while (!inf.eof())
{
inf.getline(sline, 128);
.... // if sline[0] is digital -> bianma[0] ....

}
inf.close();
...
Eaklony
2012-11-17
知道答主
回答量:28
采纳率:0%
帮助的人:23.9万
展开全部
我想问这是怎么通过编译的......x的定义在哪里......
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友42b0877
2012-11-17 · TA获得超过314个赞
知道小有建树答主
回答量:586
采纳率:0%
帮助的人:374万
展开全部
用inf.read
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kongxueheteng
2012-11-18
知道答主
回答量:18
采纳率:0%
帮助的人:11.4万
展开全部
这个程序的定义是什么,而且那个数你再看看是不是超出定义的范围了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式