C语言文件之读取数据
2018-03-12 12:44
483 查看
/*读取数据,以字符为单位一个一个从文本文件读取数据,使用库函数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;
}
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;
}
相关文章推荐
- C语言从文本文件中用字符串读取一行数据,然后再依次遍历字符串将字符串中数据分配。
- C语言读取txt文件的数据
- C语言setpwent()函数:从头读取密码文件中的账号数据
- C语言从文件中读取多行用逗号分隔数据的解决方案
- c语言如何从txt文件读取数据
- C语言读取txt里面的图像数据字符串换成十六进制然后保存为bmp格式的图像文件
- C语言读取文件数据到结构体数组
- 一分钟了解“c语言读取文件中的数据fread”
- matlab写数据到txt文件,C语言读取文件内容到数组@项目简介:基于PSS序列(频域)估计整数倍频偏
- C语言之文件操作05——矩阵(数据)的读取方法
- C语言读取文件中的数据作为输入和输出
- c语言创建写入和读取TXT文件数据
- C语言之文件操作07——读取文件数据并计算均值方差标准差
- c语言实现把文件中数据读取并存到数组中
- C语言创建一个文件,写入数据并换行,再依次读取每行的数据,将读取的行数据以一定的格式命名为另一文件的文件名
- 孙其功陪你学之——C语言读取kinect获得的深度数据.pgm文件
- C编写以二进制读取文件(任意格式eg :图片),保存到C语言数据格式的TXT文档
- C语言文件读写操作,从文件读取数据
- C语言fread()函数:读文件函数(从文件流读取数据)
- C语言简单的文件打开/读取数据/写回文件操作