重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
承德县ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
#includestdlib.h
int main()
{
FILE *fp,*ok;
char str1[80],str2[80];
if((fp=fopen("d:\\file.txt","r+"))==NULL)//打开d盘下名为file的文本文件;
{
puts("file文件打开失败!");
exit(0);
}
else
puts("file文件打开成功");
if((ok=fopen("d:\\file1.txt","r"))==NULL)//打开d盘下名为file1的文本文件;
{
puts("file1文件打开失败!");
exit(0);
}
else
puts("file1文件打开成功");
/*__________________*/
scanf("%[^!]",str1);//输入一串字符,以!为结束标志;
fprintf(fp,"%s",str1);//将字符串str1写入指针fp所指向的文件;
fscanf(ok,"%s",str2);//读取指针ok指向的文件,将内容以字符串的形式存储在数组str2中 ;
puts(str2);
/*__________________*/
fclose(fp);//关闭文件;
fclose(ok);
return 0;
}
一般来说在C语言中读取txt文件的信息有两种方法,一种是使用C语言标准文件I/O中的fopen()、fread()等等函数,一种是调用操作系统中的API函数,比如Windows上的ReadFile()、OpenFile()等等,现在操作系统一般都具备内存文件映射功能,对于大的txt文件,一般都使用这种方式操作。下面是一个使用C语言标准文件I/O操作文件的例子。
#includestdio.h
FILE*stream;
void main(void)
{
long l;
float fp;
char s[81];
char c;
stream=fopen("fscanf.out","w+");
if(stream==NULL)
printf("Thefilefscanf.outwasnotopened\n");
else
{
fprintf(stream,"%s%ld%f%c","hello world",
65000,3.14159,'x');
/*Setpointertobeginningoffile:*/
fseek(stream,0L,SEEK_SET);
/*Readdatabackfromfile:*/
fscanf(stream,"%s",s);
fscanf(stream,"%ld",l);
fscanf(stream,"%f",fp);
fscanf(stream,"%c",c);
/*Outputdataread:*/
printf("%s\n",s);
printf("%ld\n",l);
printf("%f\n",fp);
printf("%c\n",c);
fclose(stream);
}
}
C语言对文件进行读取之前需要先打开文件,然后再进行读写,读写完之后关闭文件。
可以使用两组函数实现:
一、C语言库函数
打开文件:fopen
读写(一般对应成对使用):
fgetc---fputc fgets---fputs fread---fwrite
关闭文件:fclose
二、Linux系统函数
打开文件:open
读写(一般对应成对使用):read---write
关闭文件:close
使用fopen,fscanf函数即可读取文件数据。
1、fopen的函数原型: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
#define F_PATH "d:\\myfile\\file.dat"
char c;
int main(){
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp) return -1;//要返回错误代码
while(fscanf(fp,"%c",c)!=EOF) printf("%c",c); //从文本中读入并在控制台打印出来
fclose(fp);
fp=NULL;//需要指向空,否则会指向原打开文件地址
return 0;
}
if(fscanf(fp1,"%s : %s equal: %lf",person[index].num,person[index].first, person[index].equal)==EOF)
{
printf("END FILE.");
exit(0);
}
}
for(i=0;i1;i++)
{
//person[i].first[0]=toupper(person[i].first[0]);
//person[i].last[0]=toupper(person[i].last[0]);
printf("The num and name:\n%s:%s equal:%lf.\n",person[i].num,person[i].first, person[i].equal);
data.txt里的数据我是这样的。
414314 : FanXiang equal:2.0
问你个问题"data.txt" 这个文件的路径是在哪?
C语言函数返回类型的默认定义类型是void。( 错 )for语句作为循环控制语句时,其括号内各个表达式及其后的分号都可缺省。(对 )在 if语句中,不可以没有 else 子句。 ( 错 )程序是按书写的顺序执行的。( 错)文件的读函数是从输入文件中读取信息,并存放在内存中。( 对 )在 C 语言中,只有在两个字符串所包含的字符个数相同时,才能比较大小。如字符串“That”与“The”就不能进行大小比较。( 错 )在 C 语言程序中,happy是正确的标识符。( 对)在 C 程序中一行内可以写几个语句,一个语句可以分写在多行上。因此,并不是每一条 C 语句都必须有一个分号的。( 错 )C 语言中 , 字符串常量存放在字符数组中要有一个结束符 , 该结束符是0 。( 对 )C提供的预处理功能主要有宏定义、文件包含和条件编译三种。( 对 )数组在定义时没有必要指定数组的长度,其长度可以在程序中根据元素个数再决定。( 对 )字符串是C 语言中一种基本数据类型,字符串总是以‘\n’作为结束标志。( 错 )C 语言规定: 在一个源程序中, main函数的位置必须在最开始。( 错 )标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。( 对 )continue 只能用于循环体中。( 错 )C 语言程序实现与其他高级语言一样也要经过编辑、编译连接和运行这样的三步曲。( 对 )预处理命令的前面必须加一个“#”号。(对 ) C程序的注释部分可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。但是可以增加程序的可读性。(对 )在多层循环中, 一个break语句只向外跳一层。( 对 )在对数组全部元素赋初值时,不可以省略行数,但能省略列数。( 错 )