Fread() & fwrite() - C (СИ)
Формулировка задачи:
Помогите пожалуйста ,не могу понять как использовать функции fread() и fwrite().
И если можно ,пожалуйста с объяснением.
Вот например одна задача которую я не могу решить.
Переменная типа int в памяти компьютера занимает 4 байта. Выведите эти четыре байта по одному, начиная от младшего байта, то есть байта с меньшим адресом. Каждый байт должен выводиться в виде целого числа от 0 до 255.
ВХОДНЫЕ ДАННЫЕ
Программа получает на вход одно целое число от -2147483648 до 2147483647.
Используйте указатели, для того, чтобы получить доступ к отдельным байтам числа.
ВЫХОДНЫЕ ДАННЫЕ
Программа должна вывести четыре числа, каждое от 0 до 255, соответствующих побайтовому представлению данного целого числа.
ввод вывод
0 ________ 0 0 0 0
1 ________ 1 0 0 0
256 ______ 0 1 0 0
1000 _____ 232 3 0 0
-1 _______ 255 255 255 255
Заранее спасибо.
Решение задачи: «Fread() & fwrite()»
textual
Листинг программы
#include <stdio.h>
#include <stdint.h>
int main(void){
uint8_t* p, *e;
unsigned int x;
while(scanf("%u", &x) == 1){
p = (uint8_t*)&x;
e = p + sizeof(x);
while(p != e)
printf("%u ", *p++);
putchar('\n');
}
getchar();
return 0;
}
Объяснение кода листинга программы
В этом коде программа запрашивает у пользователя ввод числа, преобразует его в указатель на байты и выводит каждый байт числа в отдельной строке. Вот список элементов кода:
- Включаемые заголовочные файлы:
и . - Объявление переменных:
- uint8_t* p;
- uint8_t* e;
- unsigned int x;
- Основной цикл программы, который выполняется, пока пользователь вводит числа:
- scanf() используется для считывания числа с консоли и сохранения его в переменной x.
- p = (uint8_t*)&x; - указатель p получает адрес первого байта числа x.
- e = p + sizeof(x); - указатель e получает адрес последнего байта числа x.
- while(p != e) - цикл, который выполняется, пока p не станет равным e.
- printf() используется для вывода значения каждого байта числа.
- putchar() используется для вывода символа новой строки.
- Конец цикла программы:
- getchar() используется для считывания символа, который завершит текущую строку ввода пользователя.
- return 0; - указывает на успешный конец работы программы.