【问题标题】:How to print a values (height/width) from a structure declared in a header file C如何从头文件 C 中声明的结构中打印值(高度/宽度)
【发布时间】:2014-02-23 11:34:30
【问题描述】:

我尝试从位图文件中打印一个值。该结构在头文件中声明。 如何访问成员并打印出他们的值?

这是头文件中的代码。现在我想在 main.c 中打印成员宽度和高度的值。

typedef struct
{
    unsigned int   size;
    unsigned int   width;
    unsigned int   height;
    unsigned short planeCnt;
    unsigned short depth;
    unsigned int   compression;
    unsigned int   imageSizeBytes;
    unsigned int   xPelsPerMeter;
    unsigned int   yPelsPerMeter;
    unsigned int   colorsUsed;
    unsigned int   importantColors;

} bmpInfoHeader;

我试过这样做:

    printf("%d", bmpInfoHeader.height);
    printf("%d", bmpInfoHeader.width);

但我收到以下错误:

错误 C2228:'.width' 左侧必须有类/结构/联合

'bmpInfoHeader' : 非法使用该类型作为表达式

请帮忙。提前致谢

【问题讨论】:

  • 你不能写int=123;你必须做一个实例int i; i = 123;
  • 你在哪里声明bmpInfoHeader?请注意,这个变量与结构女巫同名是导致问题的原因。你需要做 bmpInfoHeader bmp = (初始化函数);

标签: c struct structure


【解决方案1】:

您需要一个 struct bmpInfoHeader 变量,以便分配内存并打印一些值。现在您只有结构声明,没有要打印的内容。 您需要访问具有此结构类型的变量:

bmpInfoHeader bmpInfo;  // memory allocated on the stack
bmpInfo.height = 680;   // height field initialized
//...

printf("%d", bmpInfo.height);

【讨论】:

  • 这些值是从位于../bitmap 的位图文件中读取的。整个代码写得很好,但我只需要读取成员高度和宽度的位图文件信息。感谢您的意见
【解决方案2】:

你应该这样做:

bmpInfoHeader t = { 1, 2 };
printf("%d", t.height);
printf("%d", t.width);

bmpInfoHeader是一个类型名,你需要定义一个该类型的变量,比如t,初始化它,然后通过t.width访问它的成员。

【讨论】:

  • 哇,你解释得真好。我现在明白 bmpInfoHeader 是一种应该像你说的那样定义的类型。它打印值 0 和 2,但应该是 47 和 69 像素。你知道怎么来的吗?
  • 我不明白你想说什么,你能说得更具体点吗?
  • 是的,我会尝试:数据是从位图 eagle.bmp 中读取的。当我用资源管理器检查宽度和高度(尺寸)时,它说:69x47 像素。这些值应该打印在我的屏幕上,但它会打印 0 高度和 2 宽度。以下函数用于读取位图信息: FILE* openBitmap (char* fileName); bmpHeader bitmapFileHeader (FILE file); bmpInfoHeader bitmapInfoHeader (FILE *file); int 像素 (FILE *file, Bitmap *bitmap, pixel 像素, unsigned int numberOfPixels, unsigned int offset);
  • 请更新您的问题或提出新问题,并在其中明确说明您做了什么、预期什么以及实际得到了什么。
猜你喜欢
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
  • 2012-12-15
  • 1970-01-01
相关资源
最近更新 更多