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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> printf, напечатать массив символов
alx.bilous
сообщение Nov 24 2014, 11:09
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #17


Гуру
******

Группа: Модератор 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
alx.bilous
сообщение Nov 24 2014, 12:24
Сообщение #18


Участник
*

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



гцц понимает, keil понимает, аврка понимает, iar вроде тоже как. Значит практически все компиляторы понимают?
И вообще, "*" стандарт явно определяет.

Ну и то что маргинальные компиляторы не могут в этот формат, никак не означает что нельзя использовать эту функцию
Go to the top of the page
 
+Quote Post

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

 


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


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