Изменение строки char * в цикле C - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь изменить строку в цикле, чтобы иметь возможность сохранять мои изображения с изменяющейся переменной.Фрагмент кода выглядит следующим образом:

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 голосов
/ 12 ноября 2018

Вы можете использовать sprintf для создания строки форматирования:

char Filename[50];
sprintf(Filename, "NEWIMAGE%d", frames);
0 голосов
/ 12 ноября 2018

Создайте строку имени файла с помощью sprintf и используйте спецификатор преобразования формата %d для int:

char filename[32];
sprintf(filename, "NEWIMAGE-%d", frames);

sprintf работает так же, как printf, но «печатает» строку вместо stdout.

Если вы объявили frames как unsigned int, используйте %u. Если это size_t, используйте %zu. Подробности смотрите на дружественной printf странице справочника, которая расскажет вам, как, например, вы можете обнулить номер.

Убедитесь, что массив символов, в который вы пишете, достаточно большой, чтобы вместить самый длинный вывод плюс дополнительный символ '\0'. В вашем конкретном случае NEWIMAGE-10 + 1 означает, что 11 + 1 = 12 символов достаточно, но 32 рассчитано на будущее в течение некоторого времени.

Если вы хотите программировать как профессионал, посмотрите на функции snprintf и asnprintf, которые могут ограничивать или распределять память, в которую записывается, соответственно.

...