Как распечатать массив символов в C, как 'Arrays.ToString (array)' из Java? - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу напечатать массив символов C, как Arrays.ToString(array); из Java. Он печатает то, что я хочу, но ставит некоторые символы в конце. Я думаю, это из-за специального символа \0.

Я объявил массив символов char letters[] = {'g','y','u','c','n','e'};

И попытался напечатать: printf("\n [%s]:", letters);

Вывод: [gyucneÇ_=]

Вот код Java:

    char[] letters= {'g','y','u','c','n','e'};
    System.out.print( Arrays.toString(letters) );

Вывод:

[g, y, u, c, n, e]

Я хотел получить вывод кода Java. Интересно, если я хочу, чтобы он тоже содержал запятые, нужно ли печатать символы по одному или можно распечатать сразу?

И, конечно же, мой приоритет - удалить специальный символ, напечатанный в конце кода C.

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Печатайте каждую букву самостоятельно. У вас нет строки. Вы не можете вызвать большинство функций из <string.h> или printf() или из множества других, которые ожидают строку .

char letters[] = {'g', 'y', 'u', 'c', 'n', 'e'}; // ATTENTION: letters is not a string!
for (int i = 0; i < sizeof letters; i++) {
    putchar(letters[i]);
}
putchar('\n'); // end with a newline
0 голосов
/ 03 апреля 2019

Я объявил массив символов: char letters[] = {'g','y','u','c','n','e'};

Но это не строка C (поскольку это не NUL прекращено!).Вместо этого вы должны были кодировать:

const char letters[] = {'g','y','u','c','n','e',(char)0};

(или использовать '\0' вместо (char)0 ....) или еще лучше:

const char letters[] = "gyucne";

, и оба в точности эквивалент.

Затем вы можете кодировать что-то вроде printf("letters are %s\n", letters);, поскольку ваш letters теперь является строкой C.

NB.Пожалуйста, прочитайте также http://utf8everywhere.org/ & Как отлаживать небольшие программы - и то, и другое практически актуально для вашего случая.См. Также по крайней мере C ссылку сайт.

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