① 如何用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);
}
望採納!