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

 
 
> 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
Ответов
Xenia
сообщение Nov 14 2014, 23:37
Сообщение #2


Гуру
******

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



Цитата(Метценгерштейн @ Nov 15 2014, 02:30) *
есть массив char, содержит 5 символов. никакого завершающего нуля нет.
как мне его напечатать?


Как строку, но с ограничителем в формате:

char array[5] = {'a', 'b', 'c', 'd', 'e'}
printf( "%5.5s\n", array);

такой формат запретит печатать строку дальше 5-го символа, а потому будет не важно, есть в конце нуль или нет.
Go to the top of the page
 
+Quote Post
alx.bilous
сообщение Nov 24 2014, 11:09
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 18-03-12
Пользователь №: 70 865



Цитата(Xenia @ Nov 15 2014, 02:37) *
Как строку, но с ограничителем в формате:

char array[5] = {'a', 'b', 'c', 'd', 'e'}
printf( "%5.5s\n", array);

такой формат запретит печатать строку дальше 5-го символа, а потому будет не важно, есть в конце нуль или нет.


Цитата
The width and precision formatting parameters may be omitted, or they can be a fixed number embedded in the format string, or passed as another function argument when indicated by an asterisk "*" in the format string. For example printf("%*d", 5, 10) will result in " 10" being printed, with a total width of 5 characters, and printf("%.*s", 3, "abcdef") will result in "abc" being printed.


Легко заметить, что нету каких либо требований, что бы аргумент размера был константой

Сообщение отредактировал alx.bilous - Nov 24 2014, 11:10
Go to the top of the page
 
+Quote Post
Xenia
сообщение Nov 24 2014, 12:00
Сообщение #4


Гуру
******

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



Цитата(alx.bilous @ Nov 24 2014, 14:09) *
printf("%.*s", 3, "abcdef")
Легко заметить, что нету каких либо требований, что бы аргумент размера был константой


Далеко не все компиляторы понимают такой формат. Компиляторы для микроконтроллеров обычно не понимают.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   printf   Nov 14 2014, 23:30
- - Метценгерштейн   а если у меня массив символов не всегда 5, а может...   Nov 14 2014, 23:51
|- - Xenia   Цитата(Метценгерштейн @ Nov 15 2014, 02:5...   Nov 15 2014, 00:11
|- - 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 Текстовая версия Сейчас: 31st July 2025 - 18:52
Рейтинг@Mail.ru


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