Corrupted stack - C (СИ)
Формулировка задачи:
Доброе утро, подскажите где я накосячил со стэком?
#include <stdio.h> #include <string.h> char GetAddress(char **file_content) { char slaveAddr; sscanf((*file_content), "%2X", &slaveAddr); slaveAddr = (slaveAddr >> 1); (*file_content)+=2; unsigned int addr = (unsigned int)&slaveAddr; // моя проверка, чтобы посмотреть что переменная правда в памяти есть return slaveAddr; } int main() { char* file_content = "3245678"; char slaveAddr = GetAddress(&file_content); return 0; }
Решение задачи: «Corrupted stack»
textual
Листинг программы
unsigned char slaveAddr; sscanf(*file_content, "%2hhX", &slaveAddr);
Объяснение кода листинга программы
- Переменная
slaveAddr
типа unsigned char объявлена для хранения адреса раба. - Ввод данных осуществляется с помощью функции
sscanf
. - Формат ввода
%2hhX
означает, что вводится 1 байт (8 бит). - Функция
sscanf
пытается считать данные из файла, на который указываетfile_content
. - Результат считывания сохраняется в переменной
slaveAddr
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д