gpt4 book ai didi

c - 读取数据并将其输入到二维字符数组,以及 printf。在c中

转载 作者:行者123 更新时间:2023-11-30 19:37:12 25 4
gpt4 key购买 nike

我有一个包含类似数据的文件

             wavenumber wavelength  PS
0.000000e+00 inf 1.339797e+10
2.667793e-04 2.355200e+04 2.264711e+07
5.335585e-04 1.177600e+04 5.774260e+06
8.003378e-04 7.850667e+03 4.347408e+06
1.067117e-03 5.888000e+03 2.071735e+06
1.333896e-03 4.710400e+03 1.338209e+06
1.600676e-03 3.925333e+03 1.010330e+06
1.867455e-03 3.364572e+03 7.951162e+05
2.134234e-03 2.944000e+03 6.293471e+05
2.401013e-03 2.616889e+03 5.702861e+05
2.667793e-03 2.355200e+03 4.124521e+05
//this row goes to 513 and stop
<小时/>

因此,我制作了二维字符数组,因为我想将字符的数据保存在文件中。但是,问题是当我调用数组时,它没有显示我输入的数据。

我犯了什么问题?

而且,如果我想将列的数据保存到每列的数组中,例如波数[513]、波长[513]、功率规范[513],我该怎么办?

我很高兴您对此提出任何评论。

        char data[513][3];

//char wavenumber[513], wavelength[513], powerspec[513];
int COL, ROW, MAX_wavenumber, MAX_wavelength, MAX_powerspec;
int HEIGHT,WIDTH;
HEIGHT = 513;
WIDTH = 3;


//input data to new array
for(COL = 0; COL < HEIGHT; COL++){
for (ROW = 2 ; ROW < WIDTH; ROW++){
fscanf(fp, "%s", &data[COL-1][ROW-1]);
printf("%s ---\n",&data[COL-1][ROW-1]); //it shows perfectly.
}
}

/********* PROBLEM PART ***********/
printf( "%s\n!!", &data[512][2]);

最佳答案

这里有很多错误:

    char data[513][3];

这意味着您为 513 次出现(每次 3 个字符)腾出了空间。您似乎真正想要的是 513x3 字符串。 C 没有原生字符串类型。 C 中的字符串只是以 0 结尾的字符数组。

如果您想要 513 组,每组 3 个字符串,您可以使用结构来实现:

typedef struct
{
char wavenumber [50];
char wavelenght [50];
char ps [50];
} wave_data;

然后,要声明其中的 513 个,请执行以下操作:

wave_data data [513];

然后,要访问这些,您可以执行以下操作

        fscanf(fp, "%s", &data[COL-1].wavenumber);

请注意,您的代码中还存在其他问题,例如滥用 scanf,但这解决了您的主要问题。

关于c - 读取数据并将其输入到二维字符数组,以及 printf。在c中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40170943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com