扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
步骤逻辑:
创新互联主营沙洋网站建设的网络公司,主营网站建设方案,app软件定制开发,沙洋h5重庆小程序开发搭建,沙洋网站营销推广欢迎沙洋等地区企业咨询
1:打开要写入字符串的文件并检查文件是否已打开。
2:向该文件写入指定的字符串。
3:关闭文件。
需要的头文件和函数(这里对函数的使用方法不再介绍):
1:stdio.h头文件下的fopen函数,fputs函数,fclose函数。
2:stdlib.h头文件下的exit函数。
以下是完整代码并附有详细注释:
#include stdio.h //所用到的关键函数fopen,fputs,fclose都在stdio.h头文件中;
#include stdlib.h //exit函数在stdlib.h头文件中;
int main(void)
{
FILE *file = NULL; //定义一个文件类型(FILE)的指针并初始化;
const char *FileName = "D:\\测试\\百度知道.txt"; //这里假设是要在D盘的“测试”文件夹中的“百度知道.txt”文件写入字符串。注意:字符串中写入'\'符号必须双写。
file = fopen(FileName, "r+"); //调用fopen函数,将返回值赋于指针file;
if(!file) //检查文件是否打开,若打开失败,返回一条信息后,结束程序。
{
printf("文件打开失败,请检查文件是否存在!\n");
exit(1);
}
const char *string = "你知道,所以我知道。"; //需要写入的字符串内容。
if(!fputs(string, file)) //调用fputs函数写入文件,不管成功或失败都会返回一条信息。
printf("写入成功!\n");
else
printf("写入失败!\n");
fclose(file); //关闭文件。
file = NULL; //放空file指针。
return 0;
}
读写一个字符数据
经过前面的学习,我们学习了fread()、fwrite()函数的操作,这两个函数都是对一段“内存块”进行读写操作。那么,C语言还提供了fgetc()、fputc()函数,对文件中的一个字符进行读写操作。这些函数的定义如下:
int fgetc(FILE *stream);
函数说明:从stream文件指针所指向的文件读取1个字符,通过函数的返回值返回。例如:
char c = fgetc(fp);
就是从fp指向的文件,读取1个字符的数据,通过函数返回值,设置给字符变量c。
int fputc(int c, FILE *stream);
函数说明:把参数c表示的字符,写入stream文件指针所指向的文件。例如:
char c = 'M';
fputc(c, fp);
就是把参数c表示的字符变量,写入文件指针fp指向的文件。如下是一个程序测试例子:
可以看到,新建一个test.txt文件,调用fputc()函数,把一个字符写入到文件中。然后,再重新打开文件,读取文件的数据,调用fgetc()函数读取一个字符,得到的数据是刚刚写入的字符。所以,通过这个例子,我们学习了fgetc()、fputc()函数的操作,对文件进行一个字符的读写操作。
3.5 读写一行字符数据
C语言提供了fgets()、fputs()函数对文件进行读写“一行”的数据,字符串以'\n'字符换行,注意,所谓的“一行”数据,它的最后一个有效字符是’\n’,表示换行符号。字符串的结束符,还是以’\0’为结尾,表示字符串结束符。其中fgets()函数的定义如下:
char *fgets(char *buf, int size, FILE *stream);
函数说明:从stream函数指针所指向的文件中,读取size-1个字节到buf缓存,不是读取size个字节,因为,buf[ ]缓存的第size个字节存放字符串结束符,形成一个有效的字符串。
当读取到换行符时,或者到达文件末尾时,结束文件的读取操作。
返回值:读取数据成功,返回存储数据的缓存地址,就是参数buf的地址。如果读取数据失败,返回NULL。例如,读取文件完,没有数据可以再读取,则返回NULL。
int fputs(const char *buf, FILE *stream);
函数说明:把参数buf指针指向的字符串,写入到stream指向的文件。参数buf是一个字符串指针,必须指向一个合法的字符串。合法的字符串是以字符串结束符'\0'结束,表示一个字符串的结尾。
返回值:写入数据成功,返回成功写入的字符个数。失败返回EOF标记。
如下是一个程序测试例子:
程序运行结果如下:
可以看到,程序调用fputs()函数,往打开的test.txt文件写入数据。直接写入一个字符串。然后,关闭文件,再重新打开文件。调用fgets()函数读取数据,读取数据的时候,遇到回车换行的字符'\n',表示一行数据,那么,就返回读取到的一行数据。
在实际的项目开发过程中,fgets()函数非常有用。例如,我们定义一个config.txt文件,里面存放一些系统的配置信息,文件的格式如下:
cat /etc/config.txt
sys_pwd=123456
ApCliAuthMode=WPA2PSK
ApCliEncrypType=AES
ApCliChannel=1
ApCliDefaultKeyID=1
那么,文件的配置信息是一行一行数据,所以,可以用fgets()函数,快速读取出每一行系统配置信息。
设要写入的数字是int型,则用控制字符串%d和%s来完成,举例代码行如下:
fprintf(fp,"%d %s\n",12345,"abcdefg");
其中:fp是成功写打开文件的指针。此代码行先向文件写入整型数字12345,再加一个空格,接着写入字符串abcdefg,然后写入'\n'。
#include "stdio.h"
#include "string.h"
void main()
{
char a[6]="china";
char temp[1024];
int n=0;//记录有多少个china
FILE *outFile=fopen("c:\b.txt","r+");
FILE *inFile=fopen("c:\a.txt","r+");
while(fgets(temp,500,inFile)!=NULL)
{
int k=0;
for(int i=0;istrlen(temp);i++)
{
if(temp[i]==a[k] kstrlen(a))
{
k++;
}
else
{
if(k==strlen(a))
{
n++;
fprintf(outFile,"%s
",a);
}
k=0;
}
}
}
}
在C盘要有这两个文件。。。
a文件中可能有多个china ,指定加到第几行自己看情况 在设置一个int变量记录就行了
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流