簡體   English   中英

C ++將txt數據和char讀入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, "%f\n", A[i][j]);
        }
        else
        {
            fprintf(fid, "%f\t", 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.";
             }
          }
      }
    }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM