红联Linux门户
Linux帮助

ubuntu下对文件的读写操作

发布时间:2016-08-17 14:55:45来源:linux网站作者:sheldon761642718
一定要注意代码格式!(重要的话说在前面,不讲道理就让你wa到死)
 
单个字符的读取:
#include <stdio.h>  
#include <stdlib.h>
int main()  
{  
FILE *fp = fopen("test1.txt", "r");  
if(fp == NULL)  
{  
printf("open test.txt file failed\n");  
exit(0);  
}
char ch;  
while ((ch = fgetc(fp)) != EOF)  
putchar(ch);
fclose(fp);
return 0;  
}  
 
单个字符的写入:
#include <stdio.h>  
#include <stdlib.h>
int main()  
{  
FILE *fp = fopen("test1.txt", "w");  
char ch;
if(fp == NULL)  
{  
printf("open test.txt file failed\n");  
exit(0);  
}
while ((ch=getchar())!='\n')  
fputc(ch,fp);
fclose(fp);  
return 0;  
}  
 
数组或者结构体的一次读取:
#include <stdio.h>  
#include <stdlib.h>  
int main()  
{  
FILE *fp1;  
int i;  
struct student  
{  
char name[10];  
int age;  
char addr[15];  
}stu;  
if((fp1=fopen("test2.txt","rb"))==NULL)  
{  
printf("不能打开文件");  
exit(0);  
}  
printf("读取文件的内容如下:\n");  
for (i = 0; i < 2; i++)  
{  
fread(&stu,sizeof(stu),1,fp1);  
printf("%s %d %s\n",stu.name, stu.age, stu.addr);  
}  
fclose(fp1); 
return 0;  
}  
 
对数组或者结构体的一次写入:
#include <stdio.h>  
#include <stdlib.h>  
int main()  
{  
int i;  
struct student  
{  
char name[10];  
int age;  
char addr[15];  
}stu; 
FILE *fp1 = fopen("test2.txt", "wb");  
if(fp1 == NULL)  
{  
printf("不能打开文件");  
exit(0);  
}  
printf("请输入信息:\n姓名 年龄 地址:\n");  
for(i = 0; i < 2; i++)  
{  
scanf("%s %d %s", stu.name, &stu.age, stu.addr);  
fwrite(&stu, sizeof(stu), 1, fp1);  
fclose(fp1); 
return 0;  
}  
 
有一点要注意一下,在你读取同一个文件下的时候有可能会出现中文乱码的情况,这种情况下在我实践下有两种解决方式,一种是
可以将读取的文件内容存入到一个新文件中,还有一种是要在读取的时候把“rb”格式改为“rb+”。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/23390.html