Почему printf только печатает первый символ этого массива, а не все? - PullRequest
1 голос
/ 08 мая 2011
char *member[8];
char *tag;// this points a lot of text. if i print htmtag, it works fine with a few lines of text printing out

for ( int x = 0; x < 8; x++ )
{
    member[x] = tag[x+15];
}
printf("member: %s",member);

Почему вышеизложенное распечатывает только первый символ в элементе, а не целые 7, если я печатаю на элементе [0] / member [1] / member [2], значения сохраняются там, но печатается следующее?

* 1004 т.е. *

member: 1

и я хотел распечатать

member: 1234567

Ответы [ 2 ]

6 голосов
/ 08 мая 2011

член должен быть объявлен как:

char member[8];

не

char * member[8];

так как это массив символов, а не массив указателей на символы

6 голосов
/ 08 мая 2011

Поскольку вы не опубликовали достаточно кода, ниже приводится догадка :

Ваша переменная member - это не char[], а wchar_t[] или MS * 1008.*.Это сделало бы каждый элемент массива member больше 1 символа, поэтому, когда printf обрабатывает его как массив символов, он будет видеть '1', '\0', '2', '\0' и т. Д. - печатать первый 1 и останавливаться на 0-байт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...