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);

Объяснение кода листинга программы

  1. Переменная slaveAddr типа unsigned char объявлена для хранения адреса раба.
  2. Ввод данных осуществляется с помощью функции sscanf.
  3. Формат ввода %2hhX означает, что вводится 1 байт (8 бит).
  4. Функция sscanf пытается считать данные из файла, на который указывает file_content.
  5. Результат считывания сохраняется в переменной slaveAddr.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5