在C语言中使用ftell和fseek
要在C语言中使用ftell
和fseek
,需要包含stdio.h
头文件。ftell
是一个函数,它返回给定流的当前文件位置。fseek
是一个函数,它可以设置文件指针的位置。
以下是如何在C语言中使用ftell
和fseek
的示例:
#include <stdio.h>
int main() {
FILE *file = fopen("path/to/file.extension", "r");
if (file == NULL) {
printf("打开文件时出错\n");
return 1;
}
// 定位到文件末尾
fseek(file, 0, SEEK_END);
// 获取文件中的当前位置
long position = ftell(file);
printf("文件大小为 %ld 字节\n", position);
fclose(file);
return 0;
}
在这个示例中,我们首先使用fopen打开文件。然后,我们使用fseek定位到文件的末尾。
最后,我们使用ftell获取文件中的当前位置,即文件的大小(以字节为单位)。
fseek函数的用法是:
int fseek(FILE *stream, long offset, int whence);
其中,stream是文件指针,offset是偏移量,whence是起始位置。whence可以取以下值:
SEEK_SET:从文件开头开始计算偏移量。
SEEK_CUR:从当前位置开始计算偏移量。
SEEK_END:从文件末尾开始计算偏移量。
例如,如果要将文件指针定位到文件开头,可以使用以下代码:
fseek(file, 0, SEEK_SET);
fwrite的参数理解
函数原型:size_t __cdecl fwrite(const void *_Buffer, size_t _ElementSize,size_t _ElementCount,FILE *_Stream)
char* p是存放在仓库区 因为*p的长度只有9 后面写入的是常量区*p地址后的数据
strlen(p) 是计算出了p的长度 为9
sizeof(p) p的类型是char* 字符指针类型一个占8个字节
共计写入了元素类型大小*元素个数 72个字节
修改方法sizeof(*p) 这样就从char* 降级为char类型 sizeof((char)p)也是可以的
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
int main()
{
const char* p = "2024log\r\n";
FILE* pfile = fopen("1.txt", "ab");
if (!pfile)
{
return -1;
}
fwrite(p, sizeof((char)p), strlen(p), pfile);
long int n = ftell(pfile);
fclose(pfile);
}
对于ftell和fseek的运用
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int GetFileSize(FILE* pf)
{
fseek(pf, 0, SEEK_END);
long n = ftell(pf);
return n;
}
int main()
{
FILE* pf = fopen("1.txt", "rb");
if (!pf)
return -1;
int n = GetFileSize(pf);
printf("文件大小是:%d字节\n", n);
fclose(pf);
return 0;
}