Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Создаю массив. Присваиваю char buf_lin2[5000]=""; Потом идут операции и массив может быть или не пустой или пустой. Как проверить пустой ли массив? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 09:47 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
roma1975, Массив это только резервированное место. Он всегда что то содержит. Как пустой склад содержит воздух. Строки оканчиваются 0 для определения конца данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 09:56 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Хорошо как проверить его состояние он сейчас buf_lin2[5000]="" или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 09:59 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 10:03 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
roma1975, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 10:26 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
А если buf_lin2[0] == 0, а buf_lin2[1] или другой не будет 0? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 11:23 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
А вот с isEmptyBuffer получше вариант будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 11:59 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Спасибо. Вариант с isEmptyBuffer вроде подходит, а в варианте buf_lin2[0] == 0 есть сомнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 12:00 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Строка "" записывается одним байтом 0. Поэтому для проверки что в буфере пустая ASCIIZ строка достаточно проверить первый байт на 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 12:06 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Да нет в данном случае там в массиве могут быть и строчные и байтовые данные, поэтому и вызывает сомнение проверка только первого символа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 12:39 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Это в дальнейших операциях они туда размещаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 12:40 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Есть разница. 1. Весь буфер инициализирован нулями. и 2. В буфере с позиции 0 пустая ASCIIZ строка. Определись, что нужно узнать. Ведь '\0'==buf_lin2[0] и isEmptyBuffer это две больших разницы. К стати char buf_lin2[5000]=""; не инициализирует весь буфер, точнее не обязан это делать. Т.е. даже изначально isEmptyBuffer может вернуть 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 12:41 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
roma1975Да нет в данном случае там в массиве могут быть и строчные и байтовые данные, поэтому и вызывает сомнение проверка только первого символа. Для начала определись что у тебя в буфере будет: строки или данные. Если байтовые данные, то, например, 0 это данные? А 0,0? Для данных обычно дополнительно делают еще одну переменную, где хранят размер данных и ее проверяют. Если 0 - пусто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 12:50 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Да байтовые данные будут в буфере. В первых четырёх символах размер блока. И я поэтому сейчас сделал так Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 13:01 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что ничего хорошего здесь не происходит roma1975Создаю массив. Присваиваю char buf_lin2[5000]=""; Если переписать его как Код: plaintext 1. 2. 3. то очевидно выделяется память под массив символов, а потом адрес этой памяти теряется и buf_lin2 начинает указывать на область хранения пустой строки. Почему что-то должно измениться при короткой записи Код: plaintext 1. ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 22:02 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
BagaBagaПочему что-то должно измениться при короткой записи Потому что присвоение и инициализация это две разные операции, пусть и использующие один и тот же знак. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 22:04 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
BagaBaga, Очевидно, херню лучше не писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2015, 22:56 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
BagaBagaМне кажется, что ничего хорошего здесь не происходит roma1975Создаю массив. Присваиваю char buf_lin2[5000]=""; Если переписать его как Код: plaintext 1. 2. 3. то очевидно выделяется память под массив символов, а потом адрес этой памяти теряется и buf_lin2 начинает указывать на область хранения пустой строки. Почему что-то должно измениться при короткой записи Код: plaintext 1. ??? Тут написана просто фигнища. Этот код вообще не скомпилируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2015, 00:38 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovBagaBagaПочему что-то должно измениться при короткой записи Потому что присвоение и инициализация это две разные операции, пусть и использующие один и тот же знак. Про инициализацю присваиванием не слышали? И где вы тут обнаружили инициализацию _массива_? Массив char'ов (который объявлен) и указатель на последовательность символов (тут - null terminated string) - это разные типы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2015, 11:06 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. правая часть строковый литерал, имеет тип const char[]. Левая часть имеет тип char[5000]. Если не ошибаюсь, то ожидаемым поведением данной конструкции будет инициализация массива buf_lin2[5000] терминальным нулем. При этом правой частью может быть любая строка из 4999 + 1 терминального символа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2015, 12:19 |
|
||
|
Как проверить пустой массив или нет.
|
|||
|---|---|---|---|
|
#18+
roma1975Да байтовые данные будут в буфере. В первых четырёх символах размер блока. И я поэтому сейчас сделал так Код: plaintext 1. 2. Если вы хотите сопровождать размер массива, то лучше в таком случае создать свой тип данных, либо использовать существующие в С++(я таким не пользуюсь, но скорее всего таки типы данных в С++ есть) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2015, 12:29 |
|
||
|
|

start [/forum/search_topic.php?author=PNA2000&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
74ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 666ms |
| total: | 849ms |

| 0 / 0 |
