Из файла выводятся нули - C (СИ)
Формулировка задачи:
В файле записано какое-либо число
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
#include <math.h>
int main()
{
FILE * f2;
setlocale(LC_CTYPE,"");
unsigned char n,n1,w=0,razm1=3,q=0;
f2=fopen("1.txt","rb");
int res=fscanf(f2,"%c",&n);
printf("%c-",n);
n1=n<<w;
printf("%c-",n1);
q=n1>>8-razm1;
printf("%d",q);
_getch();
return 0;
}Решение задачи: «Из файла выводятся нули»
textual
Листинг программы
#include "stdafx.h"
FILE *f2;
int _tmain(int argc, _TCHAR* argv[])
{
FILE * f2;
unsigned char n=0,n1,w=0,razm1=3,q=0;
f2=fopen("1.txt","rt");
while (!feof(f2))
{
fscanf(f2,"%d",&n);
printf("%d-",n);
n1=n<<w;
printf("%c-",n1);
q=n1>>8-razm1;
printf("%d",q);
}
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявляются переменные:
f2- указатель на файл, который будет открыт для чтения;n- переменная для хранения числового значения, считываемого из файла;n1- переменная для хранения результата сдвига переменнойnвправо на количество позиций, указанных в переменнойw;w- переменная для хранения количества позиций, на которое сдвигается переменнаяnвправо;razm1- переменная для хранения количества байтов, на которое разбивается число, считанное из файла;q- переменная для хранения результата побитового сдвига переменнойn1влево на количество позиций, указанных в переменнойrazm1.
- Открывается файл
1.txtдля чтения с помощью функцииfopen(). - Организован цикл while, который будет выполняться до тех пор, пока не достигнет конца файла (это контролируется с помощью функции
feof()). - В каждой итерации цикла считывается число из файла в переменную
nс помощью функцииfscanf(). - Считанное число
nвыводится на экран с помощью функцииprintf(). - Результат сдвига числа
nвправо на количество позиций, указанных в переменнойw, сохраняется в переменнуюn1. - Сдвинутое число
n1выводится на экран с помощью функцииprintf(). - Результат побитового сдвига числа
n1влево на количество позиций, указанных в переменнойrazm1, сохраняется в переменнуюq. - Число
qвыводится на экран с помощью функцииprintf(). - После окончания цикла while выполняется функция
fclose()для закрытия файла. - Возвращается 0, что означает успешный конец работы программы.