C ++: как разыменовать несколько символов из указателя символов в памяти, используя длину имени - PullRequest
2 голосов
/ 28 апреля 2011

Вот код:

errorLog.OutputSuccess("Filename reference: %c", *t_current_node->filename);

Разумеется, он выводит только первый символ.Если я добавлю что-то вроде ->filename[nameLen], где nameLen - допустимое целое число, скажем, 10, то оно говорит:

операнд * должен быть указателем.

Спасибо!

Ответы [ 3 ]

7 голосов
/ 28 апреля 2011

Если строка заканчивается на \0, вы можете использовать %s вместо:

errorLog.OutputSuccess("Filename reference: %s", t_current_node->filename);

Вам также нужно будет передать адрес памяти имя файла , поэтому потеряйте символ *.

2 голосов
/ 28 апреля 2011

Используйте% s и удалите *

 errorLog.OutputSuccess("Filename reference: %s", t_current_node->filename);
0 голосов
/ 28 апреля 2011
  • %c печатает один символ.
  • %s печатает строку: все символы до конца \0.
  • %.10s печатает первые 10символы строки (или меньше, если строка короче)
  • %.*s принимает два аргумента, целое число, указывающее длину для печати, и указатель на строку.

Пример для последнего случая:

printf("Filename reference: %.*s", nameLen, t_current_node->filename);

...