Определяет:Вставка пустого символа в snprintf
- CHAR_BACKSLASH определяется как '\\' или 0x5c
Переменные:
- WorkingDir является C-Шнура
MyFilePath представляет собой С-струнной
int len = strlen(workingDir); char lastChar = workingDir[len - 1];
Ниже MyFilePath получает формируется из WorkingDir + обратной косой черты + буквальным "myfile.txt"
В тройственный аргумент, я пытаюсь поставить обратную косую черту, если еще нет обратной косой черты.
snprintf(myFilePath,
sizeof(myFilePath),
"%s%s%s",
workingDir,
(lastChar == CHAR_BACKSLASH) ? "" : "\\",
"myfile.txt");
Если возможно, я хотел бы изменить его на что-то подобное, но не знаю, как, потому что он требует пустой одинарной кавычки символ, и я не уверен, если это разрешено.
snprintf(myFilePath,
sizeof(myFilePath),
"%s%c%s",
workingDir,
(lastChar == CHAR_BACKSLASH) ? '' : CHAR_BACKSLASH,
"myfile.txt");
Первый случай более ясен относительно того, что это за намерение. Последний случай менее ясен, и очень вероятно, что snprintf является лишь слегка скотчем при обработке символов, чем строки одной длины. Оптимизация не стоит недостатка в удобочитаемости. –
Что делать, если я изменил его на использование «\\» для ясности, а не на шестнадцатеричном коде во всех случаях? – Lakey
У вас есть хороший момент. Я изменил его на использование определения (CHAR_BACKSLASH) для ясности, вместо шестнадцатеричного кода для обратной косой черты – Lakey