71 / 53 / 10
Регистрация: 31.07.2009
Сообщений: 149
1

Не могу записать в строку

13.06.2014, 01:15. Показов 1063. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я хочу изменить строку, которую мне дали на вход, скажем пусть это будет первый символ строки number на символ '0'. Visual'ка выводит ошибку прав доступа при записи. Причем, с массивом символов я работать могу. А вот из строк могу только считывать. Как мне изменить первый символ строки number?

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
extern "C" void __cdecl print(char *buffer, char *format, char *number);
 
int main(){
    char buffer[30];
    char *format = "15";
    char *number = "1";
    print(buffer, format, number);
    int i = 0;
}
Assembler
1
2
3
4
5
  ...
    mov bl, '9'
    mov esi, [esp + 12]
    mov [esi], bl
  ...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2014, 01:15
Ответы с готовыми решениями:

Не могу правильно записать строку
f = open('text.txt') v = open('output.txt', 'w') lines=f.readlines() a = ';' lines += a...

Не могу записать переход на новую строку
Есть Textarea юзер пишет туда своё сообщение, при нажатии enter идет переход на новую строчку,...

Не могу записать строку в файл с окончанием строки
У меня такая проблема: есть текстовый файл, в него надо закинуть строку и переместиться на линию...

Введенную с клавиатуры строку A записать в обратном порядке в строку B. Строку B вывести на экран
Помогите решить от и до))

4
Клюг
7673 / 3188 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
13.06.2014, 01:51 2
Цитата Сообщение от Nikcharn Посмотреть сообщение
А вот из строк могу только считывать.
А куда у вас указывает esi? Если на секцию констант, то она имеет аттрибут read-only и запись в неё вызывает ошибку защиты. Чтобы что-то менять в параметрах ф-ции, создавайте их через malloc(); или резервированем типа char xyzzy[30]; .
0
71 / 53 / 10
Регистрация: 31.07.2009
Сообщений: 149
13.06.2014, 02:03  [ТС] 3
Цитата Сообщение от Charles Kludge Посмотреть сообщение
А куда у вас указывает esi? Если на секцию констант, то она имеет аттрибут read-only и запись в неё вызывает ошибку защиты. Чтобы что-то менять в параметрах ф-ции, создавайте их через malloc(); или резервированем типа char xyzzy[30]; .
esi у меня указывает на адрес первого элемента строки number. А так я что то не догнал, у меня же в функцию передаются указатели, и я разыменовывая указатель в асме, получаю сам элемент. То есть я никак не смогу изменить значение в строках, которые передаю по указателю?

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

Добавлено через 6 минут
Тогда, пожалуйста, подскажите как мне узнать в асме размер переменной buffer. Мне нужно сделать такую вещь, что если число помещается в buffer, то мы пишем его туда, а если нет то оставляем пустой.
0
Клюг
7673 / 3188 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
13.06.2014, 02:04 4
number указывает на константу. если вы изобрете конструкцию типа
C
1
2
char number[2]; // или сколько-то там
strcpy(number,"1");
то меняйте на здоровье.
1
4149 / 1803 / 213
Регистрация: 06.10.2010
Сообщений: 4,033
13.06.2014, 11:04 5
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

mov esi, [esp + 12]
AFAIK можно использовать имена параметров
Assembler
1
mov esi,[buffer]
как мне узнать в асме размер переменной buffer
Обычно размер буфера передаётся как дополнительный параметр. Но если ты точно знаешь, что буфер выделен отдельным вызовом VirtualAlloc, то можешь узнать размер через VirtualQuery.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2014, 11:04
Помогаю со студенческими работами здесь

Введенную с клавиатуры строку A записать в обратном порядке в строку B. Строку B вывести на экран
Введенную с клавиатуры строку A записать в обратном порядке в строку B. Строку B вывести на экран.

Введенную с клавиатуры строку A записать в обратном порядке в строку B. Строку B вывести на экран.
Введенную с клавиатуры строку A записать в обратном порядке в строку B. Строку B вывести на экран....

Считать с файла (input.txt) строку, перевернуть строку, записать файл (put.txt) эту строку
Считать с файла (input.txt) строку, перевернуть строку, записать файл (put.txt) эту строку.

Описать строку А. Из входной последовательности символов записать в строку А только цифры
Описать строку А. Из входной последовательности символов записать в строку А только цифры.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru