不想接传单了,看见老人也不想让座了,也不想为了别人考虑了,收起一切善良和心软,因为这个世界从来没有善待过我。。。

----  网易云热评

一、打开文件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;

}

运行结果:

C语言文本文件操作_i++

 

 

 

欢迎关注公众号:顺便编点程

C语言文本文件操作_i++_02