【问题标题】:Changing char* string in a C loop在 C 循环中更改 char* 字符串
【发布时间】: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构造文件名。
  • 谢谢你们,太好了。

标签: c string loops char


【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      • 2020-05-18
      • 2013-04-29
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 2020-05-22
      相关资源
      最近更新 更多