gpt4 book ai didi

c - 将文件中的数组读入数组然后将其打印到另一个文件时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:43 26 4
gpt4 key购买 nike

嘿伙计们,我正在尝试让这段代码在 c 中工作,我有一个看起来像这样的数据文件:

123 456 789 101 121 131 415....

它是图像的数据,这些数字在 256X128 的网格中,我尝试使用嵌套的 for 循环读取这些数字并以相同的方式打印它们,但输出文件中应该有相同的网格实际上是:

-858993460-858993460-858993460-858993460-858993460-858993460-858993460-858993460...

我不确定我的代码中需要更改什么来解决这个问题,因为我是编程新手,这是我第一次尝试编写代码,如果不太清楚,请见谅

#include <stdio.h>;

#define height 128
#define width 256
#define MAX 255
char magic[] = "P3";

int main()
{
{
int n, m;
double R[128][256];
FILE *red = NULL;
red = fopen ("picture.red", "r"); //read infile//
for (n=0; n<128; n++)
{
for (m=0; m < 256; m++)
fscanf(red, "%d", &R[n][m]); //scan in grid//
}
fclose (red);
}

{
int n,m;
double R[128][256];
FILE *pfile = NULL;
pfile = fopen ("myfile.ppm", "w"); //create new file//
fprintf(pfile, "%s\n%d %d\nNorman Norm\n%d\n", magic, width, height, MAX);
for (n=0; n<128; n++)
{ //print header for outpute file//
for (m=0; m<256; m++)
fprintf (pfile, "%d", R[n][m]); //print grid into output file//
fprintf (pfile, "\n");
}
fclose(pfile); //close output file//
return 0;
}
}

谢谢:)

最佳答案

至少需要三个改变:

  • 您需要将 fscanf 中的first "%d" 更改为 "%lf" 因为 &R[n][m] 是指向 double 的指针。

  • 并将fprintf中的second "%d"改为"%f"

  • 并移动 double R[128][256]; 以便两个部分使用相同的数组(并删除第二个定义)。

或者,将 R 声明为 int 而不是 double

编辑:您使用的是什么编译器?大多数广泛使用的编译器应该给你一个警告。例如,gcc 使用标准开关给出警告:

Line 1: warning: extra tokens at end of #include directive
Line 18: warning: format '%d' expects type 'int *', but argument 3 has type 'double *'
Line 32: warning: format '%d' expects type 'int', but argument 3 has type 'double'

(加上对 main() 原型(prototype)的提示)。

关于c - 将文件中的数组读入数组然后将其打印到另一个文件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22485216/

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