очистка массива символов c

Проверьте эти правила:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

И измените это также:

$config['uri_protocol'] = "AUTO"

//  Replace with

$config['uri_protocol'] = "REQUEST_URI" 

Источник: https://www.codeigniter.com/userguide3/general/urls .html

101
задан Nakilon 20 December 2012 в 23:24
поделиться

10 ответов

Это зависит от того, как Вы хотите просмотреть массив. Если Вы просматриваете массив как серию символов, то единственный способ убрать данные состоит в том, чтобы коснуться каждой записи. memset, вероятно, самый эффективный способ достигнуть этого.

, С другой стороны, если Вы принимаете решение просмотреть это, поскольку пустой указатель C/C++ завершил строку, устанавливание первого байта к 0 эффективно очистит строку.

110
ответ дан dda 24 November 2019 в 04:39
поделиться

Необходимо использовать memset. Установка просто первый элемент разве работает, Вы не должны будете устанавливать все элементы - в противном случае, как Вы могли установить только первый элемент на 0?

3
ответ дан Michael 24 November 2019 в 04:39
поделиться

я думал путем установки первого элемента на пустой указатель, очистит все содержание массива символов.

, Который не корректен, поскольку Вы обнаружили

Однако, это только устанавливает первый элемент в NULL.

Точно!

необходимо использовать memset для очистки всех данных, не достаточно установить одну в NULL из записей.

Однако при установке элемента массива к пустым средствам что-то специальное (например, при использовании пустого завершения представляют в виде строки в) могло бы быть достаточно установить первый элемент в NULL. Тем путем любой пользователь массива поймет, что это пусто даже при том, что массив все еще включает старые символы в память

1
ответ дан hhafez 24 November 2019 в 04:39
поделиться

Почему бы не использовать memset()? Это - то, как сделать это.

Установка первой листовой остальной части элемента нетронутой памяти, но функции ул. будет рассматривать данные как пустые.

7
ответ дан Nakilon 24 November 2019 в 04:39
поделиться

Запись нулевого символа к первому символу делает просто это. При обработке его как строки код, повинуясь пустому символу завершения будет рассматривать его как пустую строку, но это не то же как очистка данных. Если Вы захотите на самом деле очистить данные, то необходимо будет использовать memset.

2
ответ дан tvanfosson 24 November 2019 в 04:39
поделиться

Массив в C является просто ячейкой памяти, так действительно, Ваш my_custom_data[0] = '\0';, присвоение просто обнуляет первый элемент и оставляет другие элементы неповрежденными.

, Если Вы хотите очистить все элементы массива, необходимо будет посетить каждый элемент. Для именно это memset:

memset(&arr[0], 0, sizeof(arr));

Это обычно - самый быстрый способ заботиться об этом. Если можно использовать C++, рассмотрите станд.:: заливка вместо этого:

char *begin = &arr;
char *end = begin + sizeof(arr);
std::fill(begin, end, 0);
69
ответ дан John Feminella 24 November 2019 в 04:39
поделиться

То, почему Вы думали бы, устанавливая единственный элемент, очистит целый массив? В C, особенно, мало когда-либо происходит без программиста, явно программирующего его. Если Вы обнуляете первый элемент (или любое значение), то Вы сделали точно что, и ничто больше.

При инициализации Вас может обнулить массив:

char mcd[40] = {0}; /* sets the whole array */

Иначе, я не знаю техники кроме memset или чего-то подобного.

22
ответ дан abelenky 24 November 2019 в 04:39
поделиться

Нет. Все, что Вы делаете, устанавливает первое значение к '\0' или 0.

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

, Если Вы хотите очистить память, не используя memset, используйте для цикла.

4
ответ дан Alan 24 November 2019 в 04:39
поделиться

Использование:

memset(my_custom_data, 0, sizeof(my_custom_data));

Или:

memset(my_custom_data, 0, strlen(my_custom_data));
10
ответ дан Jake1164 24 November 2019 в 04:39
поделиться

устанавливает для первого элемента значение NULL. печать массива символов ничего не вернет.

1
ответ дан 24 November 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: