C++将 txt 数据和字符读取到 2D 数组中
C++ read txt data and char into 2D array
我想将文本读入包含数据和字符的arrayA[][]中。好像
然后我需要计算数据。我的代码无法做到这一点。我尝试输出 A[][] 以查看是否有任何问题,结果发现所有元素都是 0.000。请帮助我找出如何更改它。谢谢!
enter code here
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <fstream>
#include <limits>
int p = 518868;
int q = 11;
int s, t, i, j, k, m, d, r, u;
double A[518868][11];
int main(void)
{
FILE *fid;
using namespace std;
ifstream file("dump600.txt");
if (file.is_open())
{
for (i = 1; i <= p; i++)
{
for (j = 1; j <= q; j++)
{
file >> A[i][j];
}
}
}
fid = fopen("RstA600.txt", "wt");
for (i = 1; i <= 10000; i++)
{
for (j = 1; j <= 11; j++)
{
if (j == 11)
{
fprintf(fid, "%fn", A[i][j]);
}
else
{
fprintf(fid, "%ft", A[i][j]);
}
}
}
fclose(fid);
dump600.txt
id type x y z c_q[1] c_q[2] c_q[3] c_q[4] x y
1 1 0 0 30 -0.0075608 -0.710037 0.703789 0.021699 0 0
3 1 10 0 30 0.0138984 -0.409617 0.0338428 -0.911523 10 0
5 1 20 0 30 -0.31169 -0.685503 0.450455 0.479609 20 0
7 1 30 0 30 -0.194787 -0.373789 0.511419 -0.74886 30 0
问题似乎是包含文本的第一行,这将使任何file >> A[i][j]
失败。为了克服这个问题,您可以使用std::getline
跳过第一行;还要考虑以某种方式对无效输入做出反应。此外,C++中的索引以0
开头,而不是以1
开头,这样for (j = 1; j <= q; j++)
等就会超出界限并产生未定义的行为。查看应该有效的代码示例:
if (file.is_open())
{
std::string line;
if(std::getline(file, line)) {
for (i = 0; i < p; i++)
{
for (j = 0; j < q; j++)
{
if (!file >> A[i][j]) {
cout << "Invalid input.";
}
}
}
}
}
相关文章:
- 2D数组来自文本输入,中间有空格
- 如何使用用户输入在C++中正确填充2D数组
- 如何在C++中检查2D数组中负值的输入验证
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在C++函数中声明静态 2D 数组?
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 使用矢量将文本文件中的输入存储到 2D 数组中
- 获取 2D 数组 c++ 中的所有数字对
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 如何在构造函数中使用初始值设定项设置具有相同值的 2d 数组?
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 如何创建一个所有行大小不同的 2D 数组,并且用户将指定每行将有多少个元素?
- 使用指针算法修改函数中的 2D 数组
- 在C++中初始化和打印 2D 数组
- 有没有办法使用输入的维度初始化 2d 数组中的所有项目而不循环C++?
- C++ 2D 数组写入多个位置
- 检测到堆损坏:在正常块 c++ 动态 2D 数组之后
- 如何从initializer_list初始化 2D 数组
- 交换函数不是在 C++ 中交换 2D 数组的元素