在C循环中更改char *字符串

时间:2018-11-12 16:21:59

标签: c string loops char

我正在尝试在循环中更改字符串,以便能够使用更改的变量保存图像。代码段如下:

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中放入一个随循环计数器而变化的变量,以便我保存的文件每次迭代都更改名称。

任何帮助都会很棒。

2 个答案:

答案 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个字符在将来会适应未来。

如果要像专家一样编程,请查看snprintfasnprintf函数,它们可以分别限制或分配写入的内存。

答案 1 :(得分:3)

您可以使用sprintf创建格式字符串:

char Filename[50];
sprintf(Filename, "NEWIMAGE%d", frames);