63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
1 | |
Задать строку без нулевого символа25.07.2014, 15:56. Показов 2629. Ответов 16
Метки нет (Все метки)
подскажите как задать строку без нулевого символа? когда пишешь так char str[] = "hello world" он автоматом добавляется, пробовал даже писать так char str[] = {'h','e','l'} (ну и т.д.) и все равно добавляется а очень надо без нулевого символа...
0
|
25.07.2014, 15:56 | |
Ответы с готовыми решениями:
16
Как вывести строку без первого символа? Если в строке нет символа *, то оставить эту строку без изменения Ввод строки S и символа С. Результат: число повторений символа С и порядковые позиции вхождения этого символа в строку Как удалить число после определенного символа, поставить ноль, остальную строку оставить без изменений? |
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
||||||
25.07.2014, 16:02 | 2 | |||||
Нет "строк", есть массивы байт.
1
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
25.07.2014, 16:06 [ТС] | 3 |
castorsky, сначала показалось что это оно, но нет... там все равно есть нуль-байт
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
25.07.2014, 16:10 | 4 |
GetHelp, как там может что-либо добавляться, если весь массив заполнен?
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||
25.07.2014, 16:17 [ТС] | 5 | |||||
не знаю, но у меня че то не выходит, хотите вот код...
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
25.07.2014, 16:17 | 6 |
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
25.07.2014, 16:25 | 7 |
Потому что нет нуля, а необходимые символы есть и программа их находит, правда уже за пределами массива.
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
25.07.2014, 16:32 [ТС] | 8 |
хз там в дебаггере вообще показывает что в expression[index] какая то рандомная 'э'... (т.е. при той последней итерации, когда после второй единицы), ну и почему он заходит тогда в этот while?
Добавлено через 3 минуты я щас вообще заметил что он туда заходит даже когда '+' это вообще че то за гранью моего понимания...
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
25.07.2014, 16:33 | 9 |
GetHelp, Потому что массив set_numbers не имеет нуль терминанта и strchr вполне может найти 'э' за пределами массива, в том числе и саму себя, т.е. ту же 'э', которая лежит в expression.
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
25.07.2014, 16:34 [ТС] | 10 |
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
||||||
25.07.2014, 16:35 | 11 | |||||
перепишите так:
0
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
25.07.2014, 16:39 [ТС] | 12 |
castorsky, да так и было изначально, но в таком случае при последней итерации в стек заносится '\0', что мешает его конвертации в число...
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
25.07.2014, 16:54 | 13 |
Значит следует доработать алгоритм.
Добавлено через 2 минуты Вам-то как раз и нужен нуль терминант для того чтобы strchr не выходила за пределы массива. А у Вас его нет, поэтому strchr находит "мусор" за пределами массива. Добавлено через 10 минут Я так понимаю Вы реализуете алгоритм обратной польской нотации. Было у меня, не нашел к сожалению. Вместо atof используйте strtod. Это избавит Вас от лишней возни с числами посимвольно. Кроме этого еще рекомендую Вам не заносить разность в стек операций, а заносить туда сложение, но число записывать в стек как отрицательное (вызвав strtod прямо на знаке '-'). Конечно предварительно нужно все выражение проверить на валидность и убрать все пробелы.
0
|
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
|
|||||||||||
26.07.2014, 09:33 | 14 | ||||||||||
Я бы сделал как-то так:
0
|
4 / 4 / 3
Регистрация: 28.09.2013
Сообщений: 152
|
|
28.07.2014, 17:22 | 15 |
Я не уверен, но разве строку от не строки отличает не нахождение нулевого символа в конце ?
0
|
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
|
|
29.07.2014, 15:40 | 16 |
0
|
Почетный модератор
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
|
29.07.2014, 16:17 | 17 |
GetHelp, вот почитайте: Строковые литералы в Си/Си++
0
|
29.07.2014, 16:17 | |
29.07.2014, 16:17 | |
Помогаю со студенческими работами здесь
17
Если в строке нет символа +, то оставить строку без изменений, иначе каждую из цифр перед символом + заменять на * Как вывести строку, которая состоит из аргументов командной строки так, чтобы каждое слово выводилось без первого символа Как читать строку в массив до определенного символа и после продолжить чтение опять до символа Замена символа в строке на число соответствующему номеру по порядку вхождения этого символа в строку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |