在 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);

sprintfprintf 一样工作,但“打印”到字符串而不是标准输出。

如果您将frames 声明为unsigned int,请使用%u。如果是size_t,请使用%zu。有关详细信息,请参阅您友好的 printf 手册页,其中将告诉您如何将数字补零。

确保您写入的字符数组足够大,可以容纳最长的输出加上一个额外的'\0' 字符。在您的特定情况下,NEWIMAGE-10 + 1 表示 11 + 1 = 12 个字符就足够了,但 32 在一段时间内是面向未来的。

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于在 C 循环中更改 char* 字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C 中更改字符串?

c_cpp 更改特定字符串中的char

在 C 中更改和包装关键字整数而无需循环

C - 如何循环一个字符**

使用 DLL 将 C# StringBuilder / 字符串传递给 C++ char*

char * 到字符串文字如何有效?