【发布时间】:2016-05-21 13:09:17
【问题描述】:
我正在尝试将一个结构的内容复制到另一个相同类型的结构中。
我希望能够更改一个结构的值,但以后不会影响另一个结构。
我正在处理阅读和编辑 PPM 文件。我有一个结构:
typedef struct {
char format[4];
char comments[MAX_COMMENT_LENGTH];
int width, height, maxColourValue;
PPMPixel **pixels;
} PPMImage;
然后我有一个复制功能来复制值,但是在分配不同的字段时出现错误。
我正在尝试将 newPPM 的字段复制到 messagePPM。
错误:
incompatible types when assigning to type 'char[4]' from type 'char *'
messagePPM->format = newPPM->format;
incompatible types when assigning to type 'char[100]' from type 'char *'
messagePPM->comments = newPPM->comments;
复制功能:
//A function to copy contents of one PPMImage to another
void copyPPM(PPMImage *newPPM, PPMImage *messagePPM) {
messagePPM->format = newPPM->format;
messagePPM->comments = newPPM->comments;
messagePPM->width = newPPM->width;
messagePPM->height = newPPM->height;
messagePPM->maxColourValue = newPPM->maxColourValue;
messagePPM->pixels = newPPM->pixels;
}
如何解决我的错误? 以这种方式复制字段会达到我的目标吗?
【问题讨论】:
-
您应该使用 memcpy 来复制 format 和 cmets 字段的值。如果值以 null 结尾,则可以使用 strcpy。
-
这里已经回答了:- stackoverflow.com/questions/4931123/…
-
@bruceg 感谢您的提示,这解决了我的错误消息。