在 C 循环中更改 char* 字符串
Posted
技术标签:
【中文标题】在 C 循环中更改 char* 字符串【英文标题】:Changing char* string in a C loop 【发布时间】:2019-04-15 09:54:49 【问题描述】:我正在尝试更改循环中的字符串,以便能够使用不断变化的变量保存我的图像。代码sn-p如下:
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
中放置一个随循环计数器变化的变量,这样我保存的文件每次迭代都会更改名称。
任何帮助都会很棒。
【问题讨论】:
您应该指定文件名的模式。 可以使用sprintf
构造文件名。
谢谢你们,太好了。
【参考方案1】:
使用 sprintf 创建一个文件名字符串,并为 int
使用 %d
格式转换说明符:
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
函数,它们可以分别限制或分配写入的内存。
【讨论】:
【参考方案2】:您可以使用sprintf
创建格式化字符串:
char Filename[50];
sprintf(Filename, "NEWIMAGE%d", frames);
【讨论】:
以上是关于在 C 循环中更改 char* 字符串的主要内容,如果未能解决你的问题,请参考以下文章