Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Для работы в бинарном режиме существует две функции: fread(), fwrite(). В заголовочном файле они определены:
size fread(void*buffer, size_t size, size_t count, FILE*stream);
size fwrite(void*buffer, size_t size, size_t count, FILE*stream);
buffer - указатель на буфер памяти, в который, либо из которого будут считываться данные.
Size размер элемента в байтах.
Count число считываний элемента.
Stream указатель на файл.
#include <stdio.h>
#define N2
Struct tag_book{
Char name[100];
Char author[100];
Int year;
}books[N];
Int main(){
For (int i=0; i<N; i++){
Scanf(“%s”, books[i].name);
Scanf(“%s”, books[i].author);
Scanf(“%i”, &books[i].year);}
FILE*fp=fopen(“my.txt”, “wb”);
Fwrite(books, sizeof(books),1,fp);
Fclose(fp);
Fp=fopen(“my.txt”, “rb”);
Fread(books, sizeof(books),1,fp);
Fclose(fp);
Puts(“------”);
For(int i=0; i<N; i++);{
Puts(books[i]name);
Puts(books[i].author);
Printf(“%i\n”, books[i].year);
}
Return 0;
}
#include <stdio.h>
Void main(){
FILE*stream;
Char list[30];
Int I, numread, numwritten;
If(Stream=fopen(“my”,”wb”))!=NULL){
For(i=0;i<25;i++)
List[i]=(char)(z-i);
Numwritten=fwrite(list,sizeof(char),25,stream);
Printf(“wrote %i items\n”,numwritten);
Fclose(stream);}
Else printf(“problem opening file\n”);
If(Stream=fopen(“my”,”rb”))!=NULL){
Numread=fread (list,sizeof(char),25,stream);
Printf(“numbers of items read %i\n”,numread);
Printf(“contents of buffer = %.25s\n”,list);
Fclose(stream);}
Else printf(“File could not be opened\n”);
Return;
}
В данном примере массив list выступает в качестве буфера, для ввода и вывода информации из бинарного файла. Элементы буфера инициализируются буквами латинского алфавита от z до b. Записываются в файл с помощью fwrite. Оператор sizeof(char) указывает размер элемента буквы, а число 25 соответствует числу записанных букв.
Битовые поля
Битовые поля в Си объявляются с помощью структур, позволяют получать доступ к отдельным битам или группам битов. Доступ к отдельным битам можно осуществлять с помощью побитовых операций, но использование битовых полей упрощает понимание программы.
Синтаксис объявление битового поля:
Struct <имя>{
<тип><имя>:<размер>;
…
};
#include <stdio.h>
#include <conio.h>
Struct byte{
Unsigned a0:1;
Unsigned a1:1;
Unsigned a2:1;
Unsigned a3:1;
Unsigned a4:1;
Unsigned a5:1;
Unsigned a6:1;
Unsigned a7:1;
};
Void main(){
Byte x={0,0,0,1,0,0,0,0};
x.a1=1;
printf(“size of byte = %i\n”, syzeof(byte));
printf(“ x.a1=%i\n”, x.a1);
printf(“ x.a3=%i\n”, x.a3);
printf(“x=%i\n”,x);}