① 如何用c语言获取文件的大小
intfile_size(char*filename)
{
FILE*fp=fopen(filename,"r");
if(!fp)return-1;
fseek(fp,0L,SEEK_END);
intsize=ftell(fp);
fclose(fp);
returnsize;
}
(1)c语言文件内存计算扩展阅读
C语言获取文件长度及全部内容
FILE*fp;
fp=fopen("localfile","rb");//localfile文件名
fseek(fp,0L,SEEK_END);/*定位到文件末尾*/
flen=ftell(fp);/*得到文件大小*/
p=(char*)malloc(flen+1);/*根据文件大小动态分配内存空间*/
if(p==NULL)
{
fclose(fp);
return0;
}
fseek(fp,0L,SEEK_SET);/*定位到文件开头*/
fread(p,flen,1,fp);/*一次性读取全部文件内容*/
p[flen]=0;/*字符串结束标志*/
② 【C语言】计算文件长度,把文件内容读取到内存中
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
main ()
{
string str;
ifstream f1 ( "1.txt" );
if (f1.fail())
{
cerr<<"open failure on 1.txt"<<endl;
return 1;
}
ifstream f2 ( "2.txt" );
if (f2.fail())
{
cerr<<"open failure on 2.txt"<<endl;
return 1;
}
ofstream out ( "3.txt" );
if (out.fail())
{
cerr<<"open failure on 3.txt"<<endl;
return 1;
}
while ( getline (f1, str))
{
out<<str<<endl;
}
while ( getline (f2,str))
{
out<<str<<endl;
}
f1.close();
f2.close();
out.close ();
return 0;
}
可以参照这个试试
③ c语言联合体内存计算
你的意图我不是很明白,就说说我知道的地方吧,
联合体就是你声明的所有变量他们的起始地址是相同的。换句话说他们公用一块地址。所以整个联合体的大小取决于内部变量占用空间最大的。
看看你联合体内的成员
a占4字节
b[9]
占9个字节
c占8个字节,所以按照最大的计算,联合体啊占大小9个字节,但是他还要满足第二个条件,就是大小必须是内部成员基础类型的整数倍。你的基础类型是int
4字节
char
1字节
double
8字节
取公因数并且要比9大所以他的大小事16个字节。
第二个问题,你直接为一个该结构体的指针赋值(这种做法很危险,因为你不知道指向的空间具体是什么内容),所以
pp
就指向了一个空间,然后
qq=pp+0x10
这里你要注意,并不是简单地pp的地址值上加上0x10编译器对这里的理解是
现在眼前有很多的该结构体类型,他们紧密排列,如果pp的编号是1
那么qq的编号是1+0x10
所以说qq的实际指向地址
是
0x100000(pp的地址)+sizeof(dt)(每个结构体的大小)*0x10
注意结构体大小是16
是十进制
转换成16进制也就是0x10
结果正好是0x100100了
所以最后的输出就是输出他们指向的地址值。
④ C语言中如何计算一个数组占内存多少空间
如果一个数组的长度是n(即有n个元素),元素的类型是XXX,则n*sizeof(XXX)就是这个数组所占内存空间的字节数。
⑤ C语言中如何计算一个数组占内存多少空间
首地址由数组名表示,也是0元素的地址。
若有: int a[10];
则:a与&a[0]都表示a数组所占存储空间的起始地址
⑥ c语言如何计算文件大小
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE*fp;
int a;
if((fp=fopen("1.txt","rb"))==NULL)
{
printf("此文件无法打开");
exit(0);
}
fseek(fp,0,2);
a=ftell(fp);
printf("%d\n",a);
fclose(fp);
}
望采纳!