LINUX.ORG.RU

Печать массива символов.

 , ,


0

1

Имеется массив типа char. Хочу вывести все символы на экран. Почему не печатается строка c помощью printf()?


int main()
{
   char arr[512] ;
   printf("В массиве следующие символы: %s", arr) ;
   return 0 ;
}
[\code]

Конечно, можно с помощью цикла посимвольно напечатать, но почему так, как выше не получается?

А какие символы он должен вывести? В данном примере масисив не инициализирован.

anonymous ()

Таблица Б.1 Спецификации вывода функции printf. K&R, стр.263. тыц

Silencer ()
Ответ на: комментарий от anonymous

А какие символы он должен вывести? В данном примере массив не инициализирован.

В массив данные через сокет приходят, когда циклом печатаю вывод есть.

podovalov5 ()
Ответ на: комментарий от podovalov5

Пример данных можно? И особенно строчку, где они запихиваются в строку.

grem ★★★★★ ()
Ответ на: комментарий от Eddy_Em

Ты уверен, что у тебя там нет символов с кодами <32?

У меня там вот такие данные (левый столбец не читать):

        0x0000:  e0e0 03ff ff02 1e00 0400 0000 00ff ffff  ................
        0x0010:  ffff ff02 9a00 0006 6600 2354 28b4 c102  ........f.#T(...
        0x0020:  9a00 00ca 0100 0000 0001 0000 0000 0000  ................
        0x0030:  0000 0000 9d00 0000 0000 0000 0000 0000  ................
        0x0040:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0060:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0070:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0080:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0090:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00a0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00b0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00c0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00d0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00e0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x00f0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0100:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0110:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0120:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0130:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0140:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0150:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0160:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0170:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0180:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0190:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x01a0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x01b0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x01c0:  0000 0000 0000 0108 0000 0000 0077 6d6b  .............wmk
        0x01d0:  2907 7a65 7261 7475 6c00 0000 0000 0000  ).zeratul.......
        0x01e0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x01f0:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0200:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0210:  0000 0000 0000 0000 0000 0000 0000 004c  ...............L
        0x0220:  b5fa                                     ..

podovalov5 ()
Ответ на: комментарий от podovalov5

Естественно!

Можно нули заменить на пробелы, оставив лишь нуль в конце строки. Тогда простой write выведет в консольку эти символы.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от podovalov5

То есть только циклом?

А что именно ты собрался выводить? Сами символы? Если да, то как ты будешь выводить 0x0? Или шестнадцатиричные коды?

proud_anon ★★★★★ ()
Ответ на: комментарий от podovalov5

Нулей многовато... Замени, удали, еще что-нибудь сделай с ними. Уже сказали...

FIL ★★★★ ()
Ответ на: комментарий от podovalov5

Мне просто нужно было убедится, что я пакеты получаю.

Тогда просто напиши цикл, выводящий шестнадцатиричный код каждого символа.

И да, если тебе просто нужно было убедиться, что на определённый порт на компе приходят пакеты, есть утилита nc (она же netcat). Если внутри программы для отладки — другое дело.

proud_anon ★★★★★ ()
Ответ на: комментарий от proud_anon

Тогда просто напиши цикл, выводящий шестнадцатиричный код каждого символа.

В итоге так и сделал, спасибо всем.

podovalov5 ()

rtfm

array argument decay

/thread

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.