C语言文件之读取数据

/*读取数据, 以字符为单位一个一个从文本文件读取数据,使用库函数fgetc()
int fgetc(FILE *stream);
参数stream是一个文件指针,这个函数如果字符读取成功,返回这个字符的ASCII值,失败返回-1
*/ 
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
fp = fopen("G://CTest//new.txt","r");
if(fp==NULL){
puts("can't open the file!");
exit(0); 
}
puts("open file success!\n");
puts("文件内容是:");
char ch=fgetc(fp);
while(ch!=-1){
putchar(ch);//这里还可以用fputc(ch,stdout);把屏幕看作一个文件,stdout就是指向这个文件的指针
            //fgetc()从文件读取到的字符,依次被字符变量ch指代,可以用putchar()输出,也可以
//用stdout指针写入到屏幕这个文件中 
ch=fgetc(fp);
}
puts("\n");
int return_value=fclose(fp);
if(return_value!=0)
{
puts("关闭文件失败!\n");
exit(0); 

puts("文件成功关闭!\n");
return 0;
}

 

/*字符串方式读取
char *fgets(char *str,int n,FILE *stream);
str是一个指向字符串的指针,n是读取的字符和字符串结束的标志"\0"
stream是文件指针,指向将被读取数据的文件
*/
//fgets()函数一次从stream所指向的文件中读取n-1个字符,若是读取的字符包含换行符"\n"
//和文件结束标志,那么读取的字符串将在n-1个字符前终止。
 #include<stdio.h> 
 #include<stdlib.h>
 int main()
{
FILE *fp;
fp = fopen("G://CTest//new.txt","r");
if(fp==NULL){
puts("can't open the file!");
exit(0); 
}
puts("open file success!\n");
puts("文件内容是:");
char arr[20]={0};
char *p=fgets(arr,20,fp);//开始以字符串方式读取文件中数据
while(p!=NULL){
printf("%s",arr);
p=fgets(arr,20,fp);

printf("\n\n");
int return_value=fclose(fp);
if(return_value!=0)
{
puts("文件关闭失败!\n");
exit(0);
}
puts("文件成功关闭!\n");
return 0;

}

/*二进制方式读取数据*/
/*  size_t   fread(void   *buffer,size_t   size, size_t count, FILE *stream) 
  buffer   是读取的数据存放的内存的指针(可以是数组,也可以是新开辟的空间,
           buffer就是一个索引)   
  size    是每次读取的字节数   
  count     是读取次数   
  stream  是要读取的文件的指针   */
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp_r,*fp_w;
fp_r=fopen("G://timg.jpg","rb");//打开图片文件 
fp_w=fopen("G://img.jpg","wb");//创建图片文件
if(fp_r==NULL){
puts("原始图片打开失败!\n");
exit(0); 

if(fp_w==NULL){
puts("文件2打开失败!\n");
exit(0);
}
puts("两个文件打开成功!\n");
char ch;
int i=fread(&ch,1,1,fp_r);//以二进制方式读取图片
while(i!=0){
fwrite(&ch,1,1,fp_w);//以二进制方式写入
i=fread(&ch,1,1,fp_r); 

int return_value=fclose(fp_r);
if(return_value!=0)
{
puts("关闭原始图片失败!\n");
exit(0);
}
return_value=fclose(fp_w);
if(return_value!=0)
{
puts("关闭文件2失败!\n");
exit(0);
}
puts("两个图片都关闭成功!\n");
return 0;
}

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值