#include <stdlibh>
#include <stdioh>
FILE fout, fin;
typedef struct ss {
char c[2];
int x;
int y;
} st;
void main()
{
st a[4],x[3];
int i,j,k;
fout = fopen("atxt","w");
fprintf(fout,"A 4 1110 \n");
fprintf(fout,"B 2 1101 \n");
fprintf(fout,"C 1 1011 \n");
fprintf(fout,"D 5 1111 \n");
fclose(fout);
fout = fopen("xtxt","w");
fprintf(fout,"X 3 1011 \n");
fprintf(fout,"Y 1 0100 \n");
fprintf(fout,"Z 2 1100 \n");
fclose(fout);
fin= fopen("atxt","r");
for (i=0;i<4;i++) fscanf(fin,"%s %d %d",&a[i]c,&a[i]x,&a[i]y);
fclose(fin);
fin= fopen("xtxt","r");
for (i=0;i<3;i++) fscanf(fin,"%s %d %d",&x[i]c,&x[i]x,&x[i]y);
fclose(fin);
// 以下可以比较了
printf("%s %d %d\n", a[0]c,a[0]x, a[0]y);
printf("%s %d %d\n", x[0]c,x[0]x, x[0]y);
printf("%s %d %d\n", a[1]c,a[1]x, a[1]y);
printf("%s %d %d\n", x[1]c,x[1]x, x[1]y);
}
C语言标准库提供了一系列文件I/O函数用于文件 *** 作,比如fopen()用于打开文件、fread()、fwrite()用于读写文件、fseek()用于设置 *** 作位置等等,一般C语言教程上都有文件I/O一章,细致内容,可以找本教科书学习一下。 下面的示例,是向名为1txt的文件附加hello world字符串。
#include <stdioh>#include <stringh>
int main()
{
FILE fp = fopen("1txt", "a+");
if (fp==0) { printf("can't open file\n"); return 0;}
fseek(fp, 0, SEEK_END);
char sz_add[] = "hello world\n";
fwrite(sz_add, strlen(sz_add), 1, fp);
fclose(fp);
return 0;
}
使用fopen的r方式可以实现读取,用w+方式可以实现写入。
1fopen的函数原型:FILE
fopen(const
char
path,const
char
mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r
以只读方式打开文件,该文件必须存在。
r+
以可读写方式打开文件,该文件必须存在。
rb+
读写打开一个二进制文件,允许读数据。
rw+
读写打开一个文本文件,允许读和写。
w
打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+
打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a
以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+
以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
(原来的EOF符不保留)
wb
只写打开或新建一个二进制文件;只允许写数据。
wb+
读写打开或建立一个二进制文件,允许读和写。
wt+
读写打开或着建立一个文本文件;允许读写。
at+
读写打开一个文本文件,允许读或在文本末追加数据。
ab+
读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b
字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
2例程:
#include<stdioh>
#define F_PATH "d:\\myfile\\filedat"
char c;
int main(){
FILEfp=NULL;//需要注意
fp=fopen(F_PATH,"w"); //创建文件
if(NULL==fp) return -1;//要返回错误代码
while(scanf("%c",&c)!=EOF) fprintf(fp,"%c",c); //从控制台中读入并在文本输出
fclose(fp);
fp=NULL;//需要指向空,否则会指向原打开文件地址
return 0;
}
楼下这个人真的装,不会就算了还在这水,你还是去打斗地主吧!
这个题简单,用fgetc函数直接进行循环写入就行了,话说贴主是湖工大的吧?这是实训题,你还是自己打一下吧,下面是参考答案:
#include<stdlibh>
#include<stdioh>
void solve(){
FILE fp1,fp2;
fp1=fopen("atxt","r");
fp2=fopen("btxt","w");
char c;
c=fgetc(fp1);
while(c!=EOF)
{
fputc(c,fp2);
c=fgetc(fp1);
}
fclose(fp1);
fclose(fp2);
}
读写文件
需要使用文件 *** 作函数。
建议百度C语言文件读写,系统学习一下。
这个是一门很大很复杂的模块。
基础的。
打开文件 用fopen, 区分读写,有各种模式。
读文件, 用fread, fgetc, fgets, fscanf等。
写文件, 用fwrite, fputc,fputs, fprintf等。
关闭文件, fclose
文件指针变换,fseek, rewind等。
文件状态判断, ftell, feof等。
通过一个简单的示例进行讲解(此示例用文本文件进行演示):
#include <stdioh>
#include <stdlibh>
#include <errnoh>
#define FILE_NAME "demotxt" // 文件名称
int main()
{
FILE fp = NULL; // 文件指针
char szAppendStr = "Text";
errno_t eResult;
// 以附加方式打开可读/写的文件, 如果没有此文件则会进行创建,然后以附加方式打开可读/写的文件
eResult = fopen_s(&fp, FILE_NAME, "a+");
// 打开文件失败
if (eResult != 0)
exit(-1);
// 将追加内容写入文件指针当前的位置
fputs(szAppendStr, fp);
// 最后不要忘了,关闭打开的文件~~~
fclose(fp);
return 0;
}
扩展资料
文件的打开和关闭
open()函数的作用是打开文件,其调用格式为: int open(char filename, int access); 该函数表示按access的要求打开名为filename的文件,返回值为文件描述字,其中access有两部分内容: 基本模式和修饰符, 两者用" "("或")方式连接。修饰符可以有多个, 但基本模式只能有一个。
open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。 close()函数的作用是关闭由open()函数打开的文件, 其调用格式为: int close(int handle); 该函数关闭文件描述字handle相连的文件。
回车和换行符转换成一个换行符
--
书本用的是老概念。
键盘输入,我们按Enter键,C/C++语言收到的就是'\n'
(新行符)。
打字机老概念:回车和换行,回车就是回到本行开始位置,换行就是到下一行。回车符
'\r'
,换行符'\n'
,
老码
CRLF。
“从键盘输入4个学生的数据是ASCII码,也就是文本文件”,把“也就是文本文件”删去。键盘输入是输入流,不叫文件。
“r”方式读入
--
fopen(文件名,"r")
--
用
"r"
方式
打开,是作为
文本文件打开,用于读。而不是用
二进制方式。
文件
用
wb
方式
打开和写成的,
必须用
rb
方式
打开和
读入
带
b
用于
二进制文件。不
带
b
用于
文本文件(ASCII文件)
第一种:
#include <stdioh>#include <stringh>
#include <stdlibh>
struct student //结构体
{
char name[20]; //姓名
int english; //英语
int math; //数学
int program; //程序设计
}s[50];
void daoru(struct student s[], int n) //文件导入函数
{
FILE p;
int i=n;
if((p=fopen("studentstxt", "r"))==NULL)
{
printf("无法打开此文件!");
}
else
{
while(!feof(p))
{
fscanf(p, "%s%d%d%d", s[i]name, &s[i]english, &s[i]math, &s[i]program);
i++;
n=n+1;
}
}
fclose(p);
}
void paixu(struct student s[], int n) //排序函数
{
int i, j;
struct student stu;
int allscore[2];
for (i=0; i<n-1; i++)
{
for (j=i+1; j<n; j++)
{
allscore[0]=s[i]english+s[i]math+s[i]program;
allscore[1]=s[j]english+s[j]math+s[j]program;
if (allscore[0]<allscore[1])
{
stu=s[i];
s[i]=s[j];
s[j]=stu;
}
}
}
}
void dayin(struct student s[], int n) //显示所有信息
{
int i;
printf("\n姓名\t英语\t数学\t程序设计\t总分\n");
for (i=0; i<n; i++)
{
printf("%s\t%d\t%d\t%d\t\t%d\n",s[i]name, s[i]english, s[i]math, s[i]program, (s[i]english+s[i]math+s[i]program));
}
}
int main() //主函数
{
int k, n=0;
daoru(s, &n);
paixu(s, n);
dayin(s, n);
return 0;
}
输出结果:
第二种二进制的导入也差不多,这里就不写了
以上就是关于C语言有关文件读写全部的内容,包括:C语言有关文件读写、c语言文件读写 实例、C语言如何实现对txt文件的读取和写入等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)