10、C语言——位运算与文件

位运算与文件

一、位运算
位运算的操作对象只能是整型或字符型数据
c语言提供6种位运算符:
& | ^ ~ << >>
复合赋值运算符:
&= |= ^= <<= >>=
1、按位与运算(&)
两个相应的二进制都是1时,它们按位运算后的结果才为1,否则为0
作用:清零

2、按位或运算(|)
两个相应的二进制中只要有一个为1时,则它们按位或运算后的结果为1
作用:将特定位置1

3、按位异或运算(^)
当两个相应位同为1或同为0时,按位异或运算结果为0;两个相应位一个为1另一个为0时,按位异或运算结果为1

4、按位取反运算(~)
按位取反运算符是一个单目运算符,按位取反后0变1,1变0
注:
对一个数按位取反得到的值为该数+1再乘以-1

5、按位左移运算(<<)
格式:数<<n
功能:将二进制位按位依序左移n位
对一个十进制数左移n位后得到的值为该数乘以2^n的积

6、按位右移运算(>>)
格式:数>>n
功能:将二进制位按位依序右移n位
若该数为一个负数并且不能被2^n整除则得到的数为商加-1

文件一、文件
1、文件:记录在外部存储介质(外存)上的数据的集合
2、文件的分类:
文本文件(ASCII码文件):每个字符存储到文件中
二进制文件:以二进制存储
C语言中对文件的存取是以字符(字节)为单位的

3、文件类型指针
考试中,记住FILE就是文件类型名,它是一个结构体类型。对一个文件进行操作,通过文件指针进行的
二、文件的打开与关闭
1、文件的打开(fopen()函数)
格式:fopen(文件名,文件使用方式)
功能:按指定的“使用方式”打开文件,函数返回所打开文件的指针,该指针的基类型为文件类型,文件名和文件使用方式均为字符串
打开文件的“使用方式”
“r”
"w"
"a"
"+"
注:
1)文件使用方式只能用小写字母,文件名用大写或小写均一样
2)在“文件使用方式”中若含有字母b ,则打开的是一个二进制文件(bit)
3)当fopen"打开"失败时,函数返回null

2、文件的关闭(fclose函数)
文件使用完后应该关闭该文件
格式:fclose(文件指针)

三、文件的读、写操作
文件打开后可以进行操作。c语言中对文件的操作是通过库函数实现的
读/写文件中的一个字符 fputc()、fgetc()
格式:fputc(字符,文件指针)
功能:把一个字符写到文件指针所指的文件中。其中字符可以是字符常量也可以是字符变量。若输出成功则函数返回输出的字符,失败则返回EOF
格式:fgetc(文件指针)
功能:从文件指针所指文件中读取一个字符。若读取成功则函数返回读取的字符,失败(遇到文件结束)则返回EOF

读/写文件中的一个字符串 fputs()、fgets()
格式:fputs(str,fp)
功能:向fp所指文件中写(输出)str中的字符串,str可以是字符串常量、字符数组或字符指针变量。在输出时字符串的结束符‘\0‘不输出。若输出成功则返回0,失败返回EOF
格式:fgets(str,n,fp)
功能:其中str表示一个字符指针,可以是字符数组名也可以是字符指针变量名。从fp所指文件中读取n-1个字符(不是n个字符),并在这些字符的最后加一个字符串结束符‘\0‘后赋给str
函数返回str的首地址

读/写文件中的一个数据块 fread()、fwrite()
格式:fread(buffer,size,count,fp)
格式:fwrite(buffer,size,count,fp)
其中:
buffer是数据的地址
size是每次读写的字节数
count表示让函数进行多少次的读写
fp是要进行读写一个连续的数据块
注:
1)这两个函数按二进制方式进行读写

对文件进行格式化读/写 fprintf()、fscanf()
格式:
fprintf(文件指针,格式说明符,输出列表)
fscanf(文件指针,格式说明符,输入列表)
功能:按格式说明符所指定的格式向文件中读写(输入输出)数据。其中格式说明符和输入()输出列表的用法与scanf和printf函数相同

补充:
feof(文件指针)
作用是测试文件的当前读写位置是否在文件末尾,若是则返回非0值(真),否则返回0(假)

四、文件当前读写位置函数
1)重新定位指针
格式:rewind(文件指针)
作用:使当前的读写位置重新指向文件的开头。函数无返回值

2)fseek()
格式:fseek(文件指针,位移量,起始点)
功能:将当前的读写位置从“起始点”开始按“位移量”所指定的移动字节数向后移动

起始点有:
SEEK_SET 或0 (表示“文件的开始”)
SEEK_CUR 或1 (表示“当前位置”)
SEEK_END 或2 (表示文件末尾)
位移量:要在数值后加字母l或L

3)ftell(文件指针)
功能:返回当前文件的位置,用相对于文件头的位移量表示。若返回-1L表示出错

时间: 2024-10-15 13:02:36

10、C语言——位运算与文件的相关文章

STL+位运算的文件

1.queue 队列 queue的头文件是<queue>. 定义queue对象的示例代码如: queue<int>q;  队列内存放的是int类型的数 queue<double> 队列内存放的是double类型的数 queue<node>q;  队列内存放的是结构体类型 入队列:q.push(x)   将x元素放到队列的末端. 出队列:q.pop()    将第一个元素删除 访问队首元素: q.front(); 访问队中的元素的个数: q.size(); 2

C语言--位运算

C语言--位运算 所谓位运算,就是对一个比特(Bit)位进行操作.在<二进制思想以及数据的存储>一节中讲到,比特(Bit)是一个电子元器件,8个比特构成一个字节(Byte),它已经是粒度最小的可操作单元了. C语言提供了六种位运算符: 运算符 & | ^ ~ << >> 说明 按位与 按位或 按位异或 取反 左移 右移 按位与运算 一个比特(Bit)位只有0和1两个取值,只有参与&运算的两个位都为1时,结果才为1,否则为0.例如1&1为1,0&a

c语言位运算详解

位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. C语言提供的位运算符列表: 运算符含义描述 & 按位与      如果两个相应的二进制位都为1,则该位的结果值为1,否则为0 | 按位或      两个相应的二进制位中只要有一个为1,该位的结果值为1 ^ 按位异或    若参加运算的两个二进制位值相同则为0,否则为1 ~ 取反        ~

C语言位运算

在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作.一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效率.C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序. 位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 位运算 1.位与&

C语言位运算详解(转载)

转载自:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作 运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型.C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或 两个相应的二进制位中只要有一个为1,该位的结

复习C语言 位运算

0x01:按位与(&) 作用: 1)清零.如果想让一个单元清零,即使其全部二进制位为0 2)取一个数中某些指定位.即将想要的那些位置1. 例:如有一个整数a(2个字节),想要其中的低字节,只需将a与(377,8进制 == 00000000 11111111)按位与即可. 3)要想将哪一位保留下来,就与一个数&运算,此数在该位取1. 0x02:按位或(|) 作用: 常用来对一个数据的某些位定值1,例:a(16位整数),a|0377,则低8位全置1,高8位保持原样 0x03:异或(^) 作用:

【C语言位运算的应用】如何按bit位翻转一个无符号整型

其实现思路如下: 将目标数值进行末尾比特位摘取,将所摘取的bit位放到一个相同类型的末尾,目标数值bit位右移,相同类型bit位左移. C语言的位运算符:     实现代码如下: #include <stdio.h>//按位翻转一个无符号整形 unsigned int reverse_bit(unsigned int value) { unsigned int num = 0; int i = 0; for (i = 1; i < 32; i++) { num += value &

C语言位运算遇到的坑

在Data Lab中有一个logicalShift函数给定一个值x和需要移动的位数n,要求只是用运算符:~ & ^ | + << >>,实现逻辑右移运算.思考了很久,然后我写出了如下的代码: /* * logicalShift - shift x to the right by n, using a logical shift * Can assume that 0 <= n <= 31 * Examples: logicalShift(0x87654321,4

C语言位运算实现函数体

/*1.用位操作实现无符号整数的乘法运算,函数原型是unsigned int multiply(unsigned int x, unsigned int y);.例如:(11011)2×(10010)2=((11011)2 unsigned int multiply(unsigned int a,unsigned int b) { int c =0,i = 0; for (;i >=1;//b右移1位 } else { b>>=1; } } return c ; } int main (