реклама на сайте
подробности

 
 
> printf, напечатать массив символов
Метценгерштейн
сообщение Nov 14 2014, 23:30
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



что-то не получается.
есть массив char, содержит 5 символов. никакого завершающего нуля нет.
как мне его напечатать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Метценгерштейн
сообщение Nov 14 2014, 23:51
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



а если у меня массив символов не всегда 5, а может 3 или 4 быть.
То как?
просто печать массива не вывести никак?
если никак, то могу '\0' добавить концом

с концом строки просто
printf("%s", temp);
Go to the top of the page
 
+Quote Post
Xenia
сообщение Nov 15 2014, 00:11
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Метценгерштейн @ Nov 15 2014, 02:51) *
а если у меня массив символов не всегда 5, а может 3 или 4 быть.
То как?
просто печать массива не вывести никак?
если никак, то могу '\0' добавить концом


Понятие длины массива в общем случае неопределено. Его имя тождественно указателю на начало, но где у него конец - обычно известно лишь программисту, но не компилятору.

Впрочем, если массив задан так
char array[5] = {'a', 'b', 'c', 'd', 'e'}
то число элементов можно узнать, как sizeof(array), а потом столько раз прокрутить цикл, печатая по одному:
for(int i=0; i < sizeof(array); i++) printf( "%с", array[i]);

Символ же '\0' ни малейшего отношения к концу массива не имеет, поскольку может встретиться в любом его месте или не встретиться вообще. Однако он имеет отношение к символьным строкам (где байты - литеры): там он используется в качестве конца строки (но не перевода каретки!), поскольку символ с кодом '\0' изображения не имеет.

Поэтому вам надо четко определиться с тем, что вы собираетесь распечатывать - массив со всеми его элементами, или строку до последнего глазами видимого знака. И это не одно и тоже, т.к. строка может быть короче массива, куда она была записана. В этом случае массив служит буфером для этой строки.

P.S.
Например, код
char array[1000] = "text";
порождает массив длиной в 1000 байт, в котором заполнены (инициализированы) только первые 5 элементов: 4 буквы и '\0'. А за нулем и до самого конца - мусор.
Вот и решайте, вам 4 буквы надо напечатать или все 1000 байт вместе с мусором?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   printf   Nov 14 2014, 23:30
- - Xenia   Цитата(Метценгерштейн @ Nov 15 2014, 02:3...   Nov 14 2014, 23:37
|- - alx.bilous   Цитата(Xenia @ Nov 15 2014, 02:37) Как ст...   Nov 24 2014, 11:09
|- - Xenia   Цитата(alx.bilous @ Nov 24 2014, 14:09) p...   Nov 24 2014, 12:00
|- - ViKo   Цитата(Метценгерштейн @ Nov 15 2014, 02:5...   Nov 15 2014, 10:13
- - Метценгерштейн   Код#include <math.h> #include "stdafx....   Nov 15 2014, 09:52
|- - l1l1l1   Цитата(Метценгерштейн @ Nov 15 2014, 12:5...   Nov 15 2014, 10:52
|- - Xenia   Цитата(Метценгерштейн @ Nov 15 2014, 12:5...   Nov 15 2014, 16:08
- - Метценгерштейн   давайте разбираться. переменная z1. Я ее объявляю ...   Nov 17 2014, 18:08
|- - doom13   Цитата(Метценгерштейн @ Nov 17 2014, 21:0...   Nov 17 2014, 18:23
|- - Xenia   Цитата(Метценгерштейн @ Nov 17 2014, 21:0...   Nov 17 2014, 19:17
- - Метценгерштейн   да, Вы правы. Упустил из виду что первый символ мо...   Nov 17 2014, 19:58
|- - Xenia   Цитата(Метценгерштейн @ Nov 17 2014, 22:5...   Nov 17 2014, 21:38
- - Метценгерштейн   в целом да, согласен. Насчет 97 и 'a'- дав...   Nov 18 2014, 09:19
|- - Xenia   Цитата(Метценгерштейн @ Nov 18 2014, 12:1...   Nov 18 2014, 15:59
- - alx.bilous   гцц понимает, keil понимает, аврка понимает, iar ...   Nov 24 2014, 12:24


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th August 2025 - 17:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016