Проверьте эти правила:
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
Это зависит от того, как Вы хотите просмотреть массив. Если Вы просматриваете массив как серию символов, то единственный способ убрать данные состоит в том, чтобы коснуться каждой записи. memset
, вероятно, самый эффективный способ достигнуть этого.
, С другой стороны, если Вы принимаете решение просмотреть это, поскольку пустой указатель C/C++ завершил строку, устанавливание первого байта к 0 эффективно очистит строку.
Необходимо использовать memset. Установка просто первый элемент разве работает, Вы не должны будете устанавливать все элементы - в противном случае, как Вы могли установить только первый элемент на 0?
я думал путем установки первого элемента на пустой указатель, очистит все содержание массива символов.
, Который не корректен, поскольку Вы обнаружили
Однако, это только устанавливает первый элемент в NULL.
Точно!
необходимо использовать memset для очистки всех данных, не достаточно установить одну в NULL из записей.
Однако при установке элемента массива к пустым средствам что-то специальное (например, при использовании пустого завершения представляют в виде строки в) могло бы быть достаточно установить первый элемент в NULL. Тем путем любой пользователь массива поймет, что это пусто даже при том, что массив все еще включает старые символы в память
Почему бы не использовать memset()
? Это - то, как сделать это.
Установка первой листовой остальной части элемента нетронутой памяти, но функции ул. будет рассматривать данные как пустые.
Запись нулевого символа к первому символу делает просто это. При обработке его как строки код, повинуясь пустому символу завершения будет рассматривать его как пустую строку, но это не то же как очистка данных. Если Вы захотите на самом деле очистить данные, то необходимо будет использовать memset.
Массив в 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);
То, почему Вы думали бы, устанавливая единственный элемент, очистит целый массив? В C, особенно, мало когда-либо происходит без программиста, явно программирующего его. Если Вы обнуляете первый элемент (или любое значение), то Вы сделали точно что, и ничто больше.
При инициализации Вас может обнулить массив:
char mcd[40] = {0}; /* sets the whole array */
Иначе, я не знаю техники кроме memset или чего-то подобного.
Нет. Все, что Вы делаете, устанавливает первое значение к '\0' или 0.
, Если Вы работаете с пустым указателем, завершил строки, затем в первом примере, Вы получите поведение, которое подражает тому, что Вы ожидаете, однако память все еще установлена.
, Если Вы хотите очистить память, не используя memset, используйте для цикла.
Использование:
memset(my_custom_data, 0, sizeof(my_custom_data));
Или:
memset(my_custom_data, 0, strlen(my_custom_data));
устанавливает для первого элемента значение NULL. печать массива символов ничего не вернет.