文件

文件复位

将文件指针复位的2种方法

第一种
rewind(fp);

第二种
fseek(fp,0L,SEEK_SET)

起始点 表示符号 数字表示
文件首 SEEK—SET 0
当前位置 SEEK—CUR 1
文件末尾 SEEK—END 2
 例如:fseek(fp,100L,0);其意义是把位置
指针移到离文件首100个字节处。fseek函
数一般用于二进制文件。
#include<stdio.h>
int main() {
	char ch;
	FILE* fp;
	fp = fopen("test.cpp", "rt");

	puts("\n第1次输出文件:\n");
	while ((ch=fgetc(fp))!=EOF) putchar(ch);

	//将文件指针复位的2种方法
	rewind(fp);
	//或者
	//fseek(fp,0L,SEEK_SET);

	puts("\n第2次输出文件:\n");
	while ((ch = fgetc(fp)) != EOF) putchar(ch);

	fclose(fp);

	return 0;
}

文件拷贝

#include<stdio.h>
int main() {
    FILE* fp1 = fopen("test.cpp", "rt");
    FILE* fp2 = fopen("test.txt", "wt");

    while (!feof(fp1)) {
        fputc(fgetc(fp1), fp2);
    }

    fclose(fp1);
    fclose(fp2);
    return 0;
}
//正确的程序如下:fflush函数的使用

#include <stdio.h>

#include <ctype.h>



int main() {

    char ch;

    FILE *fp=fopen("test.txt","r+");

    while ((ch=fgetc(fp))!=EOF) {

        fseek(fp,-1,1);

        fputc(islower(ch)?toupper(ch):tolower(ch),fp);

        fflush(fp); //没有这个语句结果是错误的!

    }

    fclose(fp);

    return 0;

}

注意文件读写函数用法

fgetc
fputc
fgets
fputs
数据块读写fwrite fread
格式化读写fscanf fprintf

文件读写函数

fgets
char *fgets(char *str, int n, FILE *stream)
参数
str -- 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
n -- 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。


fputs
int fputs(const char *str, FILE *stream)
参数
str -- 这是一个数组,包含了要写入的以空字符终止的字符序列。
stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要被写入字符串的流。


posted @ 2024-12-02 18:12  某朝  阅读(36)  评论(0)    收藏  举报