|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.06.2011, 20:03 | #1 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 31
|
'\0' конец строки
Доброго времения суток
В K&R на тему хеширования приводится хеш функция : hash(s) /* form hash value for string */ char *s; { int hashval; for (hashval = 0; *s != '\0'; ) hashval += *s++; return(hashval % HASHSIZE); } ввожу данные: printf("введите имя :"); scanf("\n%s",&name); print.... ...компиляция происходит успешно .. но отладчик ругается на for (hashval=0; *s !='\0'; *s++).. .. введите имя :lexa введите Имя2:lena Program received signal SIGSEGV, Segmentation fault. 0x08048541 in hash (s=0x61786500 <Address 0x61786500 out of bounds>) at first.c:18 Разве '\0' конец строки не автоматически определяется ..или где ошибка? ps : представил тут только ключевые моменты ...по сути мы передаем name в hash() в функции записи ..в случае надобности могу выложить весь исходник.. |
03.06.2011, 20:56 | #2 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Во-первых, выборосили вы юы эту книжку; во-вторых, моя "интуиция" подсказывает, что надо написать scanf("\n%s", name); без амперсанда; что у вас есть name?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
03.06.2011, 21:12 | #3 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 31
|
char *name;
без амперсанда: Program received signal SIGSEGV, Segmentation fault. 0xb7ebb294 in _IO_vfscanf () ; зря вы про книжку так - это ж классика..(даж распечатал) |
03.06.2011, 21:20 | #4 | |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Классика 1945 года? Почему функции в старом стиле? Зачем != 0 писать? Зачем скобки в return?
По теме: а такой ввод строк тоже из этой книженции взяли? Либо выделяйте память (не забыв ее освободить); либо выделяйте, забыв ее освободить (шутка); либо не выделяйте ничего, и используйте статический массив символов. Цитата:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
|
03.06.2011, 21:25 | #5 |
C++
Форумчанин
Регистрация: 27.03.2011
Сообщений: 803
|
Syuf, глупость сказали! С каких пор scanf работает со значением, а не с адресом?
P.S. Туплю, это же C-строка. Тогда правильно говорите. rowlin, так у вас *s++ в теле цикла или в заголовке? Вы написали: Код:
Код:
Ищете информацию по C++?
cplusplus.com |
03.06.2011, 21:35 | #6 | |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Цитата:
Другое дело, что если это статический массив, то эти адресса (str и &str) совпадают. Но тут это не статический массив.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
|
03.06.2011, 21:38 | #7 | |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Цитата:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
|
03.06.2011, 21:39 | #8 | |
Пользователь
Регистрация: 14.12.2010
Сообщений: 31
|
вот...
Код:
Цитата:
0x0804852f in hash (s=0x656565 <Address 0x656565 out of bounds>) at first.c:17 |
|
03.06.2011, 21:45 | #9 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Короче, hash был правильный, main надо такой:
Код:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
03.06.2011, 22:03 | #10 |
Пользователь
Регистрация: 14.12.2010
Сообщений: 31
|
Syuf
Cпасибо ..заработало .. Насчет книжки ..возможно вы правы .. но .. мож что из нового по С посоветуете .. ps: желательно без использования windows библиотек (<conio.h>...) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Найти конец строки или символ | Blourid | Общие вопросы .NET | 2 | 17.12.2010 01:09 |
Дописать строки в конец *.ini | Shouldercannon | Общие вопросы Delphi | 10 | 12.01.2010 14:30 |
Builder 2006 Не находит конец строки | coper | Общие вопросы C/C++ | 0 | 22.11.2009 20:28 |
Программа считает пробел за конец строки | AxenicX | Общие вопросы C/C++ | 3 | 12.11.2009 10:16 |
как добавить строку в конец строки | Damhurz | PHP | 4 | 16.04.2009 14:35 |