我正在尝试在循环中更改字符串,以便能够使用更改的变量保存图像。代码段如下:
for (frames=1; frames<=10; frames++)
{
char* Filename = "NEWIMAGE";
int Save_Img = is_SaveImageMemEx (hCam, Filename, pMem, memID,
IS_IMG_PNG, 100);
printf("Status Save %d\n",Save_Img);
}
我想做的是在Filename
中放入一个随循环计数器而变化的变量,以便我保存的文件每次迭代都更改名称。
任何帮助都会很棒。
答案 0 :(得分:6)
使用sprintf创建文件名字符串,并将%d
的格式转换说明符用于int
:
char filename[32];
sprintf(filename, "NEWIMAGE-%d", frames);
sprintf
的工作原理与printf
相似,但是“打印”到字符串而不是标准输出。
如果您将frames
声明为unsigned int
,请使用%u
。如果它是size_t
,请使用%zu
。有关详细信息,请参见友好的printf
手册页,该页将告诉您如何对数字进行零填充。
请确保您写入的字符数组足够大以容纳最长的输出以及一个额外的'\0'
字符。在您的特定情况下,NEWIMAGE-10
+ 1表示11 + 1 = 12个字符就足够了,但是32个字符在将来会适应未来。
如果要像专家一样编程,请查看snprintf
和asnprintf
函数,它们可以分别限制或分配写入的内存。
答案 1 :(得分:3)
您可以使用sprintf
创建格式字符串:
char Filename[50];
sprintf(Filename, "NEWIMAGE%d", frames);