Вам нужно передать указатель на указатель, если вы хотите это сделать.
void barPush(BarList ** list,Bar * bar)
{
if (list == NULL) return; // need to pass in the pointer to your pointer to your list.
// if there is no move to add, then we are done
if (bar == NULL) return;
// allocate space for the new node
BarList * newNode = malloc(sizeof(BarList));
// assign the right values
newNode->val = bar;
newNode->nextBar = *list;
// and set the contents of the pointer to the pointer to the head of the list
// (ie: the pointer the the head of the list) to the new node.
*list = newNode;
}
Затем используйте его следующим образом:
BarList * l;
l = EMPTY_LIST;
barPush(&l,&b1); // b1 and b2 are just Bar's
barPush(&l,&b2);
Джонатан Леффлер предложил вернуться новый глава списка в комментариях:
BarList *barPush(BarList *list,Bar *bar)
{
// if there is no move to add, then we are done - return unmodified list.
if (bar == NULL) return list;
// allocate space for the new node
BarList * newNode = malloc(sizeof(BarList));
// assign the right values
newNode->val = bar;
newNode->nextBar = list;
// return the new head of the list.
return newNode;
}
Использование становится:
BarList * l;
l = EMPTY_LIST;
l = barPush(l,&b1); // b1 and b2 are just Bar's
l = barPush(l,&b2);
Здесь хорошая статья от MDC, который объясняет проблемы (и решения) для формирования автозавершения. Microsoft опубликовала что-то подобное здесь , также.
Честно говоря, если это - что-то важное для Ваших пользователей, 'повреждение' стандартов таким образом кажется соответствующим. Например, Amazon использует атрибут 'автоматического заполнения' вполне немного, и это, кажется, работает хорошо.
, Если Вы хотите удалить предупреждение полностью, можно использовать JavaScript для применения атрибута к браузерам, которые поддерживают его (IE, и Firefox важные браузеры), использование someForm.setAttribute( "autocomplete", "off" ); someFormElm.setAttribute( "autocomplete", "off" );
Наконец, если сайт использует HTTPS, IE автоматически выключает автозавершение (также, как и некоторые другие браузеры, насколько я знаю).
Обновление
Как этот ответ все еще получает довольно много upvotes, я просто хотел указать, что в HTML5, можно использовать атрибут 'автоматического заполнения' на элементе формы. Посмотрите документация на W3C для него.
HTML 4 : Никакой
HTML 5 : Да
атрибут автоматического заполнения является перечислимым атрибутом. Атрибут имеет два состояния. на ключевое слово отображается на на состоянии, и прочь , ключевое слово отображается на от состояния. Атрибут может также быть опущен. Значение по умолчанию отсутствующего значения на [1 111] состояние. прочь состояние указывает, что по умолчанию, средствам управления формой в форме установят их имя поля автозаливки на [1 113] прочь ; на состоянии указывает, что по умолчанию, средства управления формой в форме будут иметь их
autofill
набор имени поля к "на".
Ссылка: W3
Как насчет того, чтобы установить его с JavaScript?
var e = document.getElementById('cardNumber');
e.autocomplete = 'off'; // Maybe should be false
Это не прекрасно, но Ваш HTML будет допустим.
Нет, хорошая статья находится здесь в Mozila Wiki.
я продолжил бы использовать недопустимое attribute
. Я думаю, что это - то, где прагматизм должен выиграть проверку.
Нет, но автоматическое заполнение браузера часто инициировано полем, имеющим тот же name
атрибут как поля, которые были ранее заполнены. Если бы Вы могли бы подстроить умный способ иметь рандомизированное имя поля , автоматическое заполнение не было бы в состоянии вытянуть любые ранее вводимые значения для поля.
, Если необходимо было дать полю ввода имя как" email_<?= randomNumber() ?>
" и затем иметь сценарий, который получает этот цикл данных через POST или ПОЛУЧАЕТ переменные, ища что-то соответствующее шаблону" email_[some number]
", Вы могли осуществить это, и это будет иметь (практически) гарантируемый успех, независимо от браузера .
Я был бы очень удивлен, предложит ли W3C путь, который работал бы с (X) HTML4. Функция автоматического заполнения совершенно на базе браузера, и была представлена в течение прошлых лет (много позже того, как стандарт HTML4 был записан).
не был бы удивлен, будет ли HTML5 иметь один, все же.
Редактирование: , Поскольку я думал, , HTML5 делает , имеют тот функция. Для определения страницы как HTML5 используйте следующий doctype (т.е.: поместите это как самый первый текст в Вашем исходном коде). Обратите внимание, что не все браузеры поддерживают этот стандарт, как это находится все еще в черновой форме.
<!DOCTYPE html>
Не идеальный, но Вы могли изменить идентификатор и название текстового поля каждый раз, когда Вы представляете его - необходимо было бы отследить его сторона сервера также, таким образом, Вы могли вывести данные.
Не уверенный, если это будет работать или нет, была просто мысль.
<script type="text/javascript">
/* <![CDATA[ */
document.write('<input type="text" id="cardNumber" name="cardNumber" autocom'+'plete="off"/>');
/* ]]> */
</script>
Если вы используете jQuery, вы можете сделать что-то вроде этого:
$(document).ready(function(){$("input.autocompleteOff").attr("autocomplete","off");});
и использовать класс autocompleteOff там, где хотите:
<input type="text" name="fieldName" id="fieldId" class="firstCSSClass otherCSSClass autocompleteOff" />
Если вы хотите, чтобы ВСЕ вводимые данные были autocomplete = off
, вы можете просто использовать это:
$(document).ready(function(){$("input").attr("autocomplete","off");});