Почему бы просто не перебрать строку идентификатора, пока не найдете пробел, и напечатать каждый символ , за исключением пробела. Попробуйте это:
void print_id(FILE *file, const char *id, char delim, int num)
{
while(*id && *id != ' ') fputc(*id++, file);
fprintf(file, "%c%d\n", delim, num);
}
Вы можете использовать strchr()
, чтобы найти пробелы и вычислить длину идентификатора, который вы хотите напечатать с этим, потому что спецификатор printf()
%s
может использоваться для печати только части строки, но тогда вы ' Я буду зацикливаться на строке дважды. Таким образом, мы делаем это только один раз. Использование:
print_id(ID, '_', 1);
Обновление: если вам нужны все символы, кроме последнего, ответ Ника Д. - это путь. Он использует одну из наиболее эзотерических функций семейства функций *printf()
, чтобы заставить printf()
печатать только до последнего символа. Есть способ сделать это с помощью цикла и fputc()
, но небольшая разница в эффективности не стоит того, чтобы работать над тем, как написать и документировать это, чтобы ваш преемник мог понять, что вы делаете , Потому что вы это документируете, верно? : P