C语言文本文件操作
原创
©著作权归作者所有:来自51CTO博客作者web安全工具库的原创作品,请联系作者获取转载授权,否则将追究法律责任
不想接传单了,看见老人也不想让座了,也不想为了别人考虑了,收起一切善良和心软,因为这个世界从来没有善待过我。。。
---- 网易云热评
一、打开文件fopen()
fp=fopen("123.txt","w");
char buf[]="abc.txt";
fp=fopen(buf,"w");
char *p="123.txt";
fp=fopen(p,"r");
1、打开成功,返回有效地址
2、打开失败,返回NULL
3、“w”,如果文件不存在,新建一个123.txt,如果存在,清除里面的内容
4、“r”,如果文件不存在,打开失败
5、“a”,如果文件不存在,新建,如果存在,光标移动到最后面
二、读写文件
1、按字符读写fgetc()、fputc()
2、按字符串读取文件fgets()、fputs()
3、文件结尾判断 feof(),必须先读文件再判断
//写字符
fputc('a',fp);
char ch = 'b';
while (ch<='w')
{
fputc(ch, fp);
ch++;
}
char p[] = "xyz";
for (int i=0;i<strlen(p);i++)
{
fputc(p[i],fp);
}
//写字符串
char* p = "aiyou\n";
fputs(p,fp);
char a[] = "bucuo\n";
fputs(a, fp);
//读字符
char ch;
while (1)
{
ch = fgetc(fp);
//判断是否到结尾,到结尾返回真
if (feof(fp))
{
break;
}
printf("ch=%c\n", ch);
}
//读字符串
char buf[100];
while (1)
{
fgets(buf, sizeof(buf), fp);
if (feof(fp))
{
break;
}
printf("%s", buf);
}
三、关闭文件fclose()
fclose(fp)
四、实例
随机生成500个100以内的数字,写入到文件并读取出来
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#define MAX 500
void writefile() {
FILE* fp = NULL;
errno_t err;
err = fopen_s(&fp, "C:\\Users\\aiyou\\Desktop\\123.txt", "w");
if (err != 0)
{
printf("文件打开失败!");
return;
}
//设置随机数种子
srand((unsigned int)time(NULL));
int i = 0;
int num;
char buf[100];
for (i=0;i<MAX;i++)
{
num = rand() % 100;
//格式化字符串
sprintf_s(buf,100,"%d\n",num);
fputs(buf, fp);
}
//关闭文件
fclose(fp);
fp = NULL;
}
void readfile()
{
FILE* fp = NULL;
errno_t err;
err = fopen_s(&fp, "C:\\Users\\aiyou\\Desktop\\123.txt", "r");
if (err != 0)
{
printf("文件打开失败!");
return;
}
int a[1024];
int i = 0;
char buf[100];
int num;
while (1)
{
//读取一行内容,放在buf中,包含\n
fgets(buf, sizeof(buf), fp);
if (feof(fp))
{
break;
}
sscanf_s(buf, "%d\n", &num);
a[i] = num;
i++;
}
int n = i;
printf("n=%d\n", n);
for (i=0;i<n;i++)
{
printf("%d, ",a[i]);
}
printf("\n");
}
int main() {
//writefile();
readfile();
system("pause");
return 0;
}
运行结果:
欢迎关注公众号:顺便编点程