gpt4 book ai didi

将结构体中的 int 转换为 C 中的字符串

转载 作者:行者123 更新时间:2023-11-30 18:49:05 25 4
gpt4 key购买 nike

我正在尝试将结构中的 int 值转换为字符串,以便我可以将它们写入 ppm 文件的 header 。

结构体定义如下:

typedef struct {
int width;
int height;
int maxColourVal;
FILE *ppmFilePointer;
} PpmStruct;

创建新 ppm 文件的函数:

PpmStruct *newWritePpm(const char *filename, PpmStruct *parentPpm){
FILE *outfile = fopen(filename, "w");
if (!outfile){
printf("Unable to open '%s'\n", filename);
exit(1);
}
PpmStruct *newPpm;
newPpm = (PpmStruct *)malloc(sizeof(PpmStruct));

/* Populating ppm struct*/
(*newPpm).width = (*parentPpm).width;
(*newPpm).height = (*parentPpm).height;
(*newPpm).maxColourVal = (*parentPpm).maxColourVal;
(*newPpm).ppmFilePointer = outfile;

/* writing outfile ppm header to file*/
fputs("P6\n", outfile);
fputs((*parentPpm).width, outfile);
fputs(" ", outfile);
fputs((*newPpm).height, outfile);
fputs("\n", outfile);
fputs((*newPpm).maxColourVal, outfile);
fputs("\n", outfile);
/* leaves pointer at start of binary pixel data section */

return(newPpm);
}

编译时,我从编译器收到几个类似的警告:

ppmCommon.h: In function ‘newWritePpm’:
ppmCommon.h:75:8: warning: passing argument 1 of ‘fputs’ makes pointer from integer without a cast [-Wint-conversion]
fputs((*parentPpm).width, outfile);

最佳答案

fputs 用于写入字符串。 parentPpm->width 是一个整数。对于 Netppm formats您需要输出 ASCII 十进制整数。最简单的方法是对整个 header 使用单个 fprintf 调用:

fprintf(outfile, "P6\n%d %d\n%d\n", 
parentPpm->width, newPpm->height, newPpm->maxColourVal);

关于将结构体中的 int 转换为 C 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43796297/

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