⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filesize.html

📁 this is a mirrored site c-faq. thought might need offline
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN"><!-- This collection of hypertext pages is Copyright 1995-2005 by Steve Summit. --><!-- Content from the book "C Programming FAQs: Frequently Asked Questions" --><!-- (Addison-Wesley, 1995, ISBN 0-201-84519-9) is made available here by --><!-- permission of the author and the publisher as a service to the community. --><!-- It is intended to complement the use of the published text --><!-- and is protected by international copyright laws. --><!-- The on-line content may be accessed freely for personal use --><!-- but may not be published or retransmitted without explicit permission. --><!-- --><!-- this page built Sat Dec 24 21:47:47 2005 by faqproc version 2.7 --><!-- from source file osdepfile.sgml dated Sat Jun 26 20:52:13 2004 --><!-- corresponding to FAQ list version 4.0 --><html><!-- Mirrored from c-faq.com/osdep/filesize.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 07:59:02 GMT --><head><meta name=GENERATOR content="faqproc"><title>Question 19.12</title><link href="fileexists.html" rev=precedes><link href="modtime.html" rel=precedes><link href="index.html" rev=subdocument></head><body bgcolor="#ffffff"><a href="fileexists.html" rev=precedes><img src="../images/buttonleft.gif" alt="prev"></a><a href="index.html" rev=subdocument><img src="../images/buttonup.gif" alt="up"></a><a href="modtime.html" rel=precedes><img src="../images/buttonright.gif" alt="next"></a>&nbsp;<a href="../index-2.html"><img src="../images/buttontop.gif" alt="top/contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><hr><p><!-- qbegin --><h1>comp.lang.c FAQ list<font color=blue>&middot;</font><!-- qtag -->Question 19.12</h1><p><font face=Helvetica size=8 color=blue><b>Q:</b></font>How can I find out the size of a file,prior to reading it in?</p><p><hr><p><font face=Helvetica size=8 color=blue><b>A:</b></font>If the ``size of a file''is the number of characters you'll be able to read from itin C(or which were written to it by a previous program),itcan bedifficultorimpossibleto determine this numberexactly(other thanby reading the whole file).</p><p>UnderUnix,the <TT>stat</TT> call(specifically,the <TT>st_size</TT> field of the stat structure)will give you an exact answer.<a href="concur2.html" rel=subdocument>[footnote]</a>Several other systems supply aUnix-like<TT>stat</TT>call,but the sizes reported for text filesmay be approximate(due to differing end-of-line representations;see question <a href="../stdio/textvsbinary.html">12.40</a>).You canopen the file and use <TT>fstat</TT>,or<TT>fseek</TT> to the endof the fileand then use <TT>ftell</TT>,butthese tend to havethe sameproblems:<TT>fstat</TT> is not portable,and generally tells you the same thing <TT>stat</TT> tells you;<TT>ftell</TT> is not guaranteed to return a byte countexcept for binary files(but,strictly speaking,binary files don't necessarily support <TT>fseek</TT> to <TT>SEEK_END</TT>at all).Some systemsprovide functions called<TT>filesize</TT>or <TT>filelength</TT>,but these are obviously not portable, either.</p><p>Are you sure you have to determine the file's size in advance?Since the most accurate way of determining the size of a file asa C program will see it is toopen the fileand read it,perhaps you can rearrange the code to learn the size as it reads.(In general, your programshould behavegracefullyifthenumber of charactersactuallyreaddoes notmatchprior expectations,since any advance determination of the size might be approximate.)See also questions<a href="../malloc/realloc.html">7.29</a>,<a href="../malloc/reallocnull.html">7.30</a>,and <a href="../misc/ragged.html">20.2</a>.</p><p>Additional links:<a href="sd23.html" rel=subdocument>further reading</a></p><p>References:ISO Sec. 7.9.9.4<br>H&amp;S Sec. 15.5.1<br>PCS Sec. 12 p. 213<br>POSIX Sec. 5.6.2<br></p><!-- aend --><p><hr><a href="fileexists.html" rev=precedes><img src="../images/buttonleft.gif" alt="prev"></a><a href="index.html" rev=subdocument><img src="../images/buttonup.gif" alt="up"></a><a href="modtime.html" rel=precedes><img src="../images/buttonright.gif" alt="next"></a>&nbsp;<a href="../questions.html"><img src="../images/buttontop.gif" alt="contents"></a><a href="../search.html"><img src="../images/buttonsrch.gif" alt="search"></a><br><!-- lastfooter --><a href="../about.html">about this FAQ list</a>&nbsp;<a href="../eskimo.html">about eskimo</a>&nbsp;<a href="../search.html">search</a>&nbsp;<a href="../feedback.html">feedback</a>&nbsp;<a href="copyright.html">copyright</a><p>Hosted by<a href="http://www.eskimo.com/"><img src="../../www.eskimo.com/img/link/eskitiny.gif" alt="Eskimo North"></a></body><!-- Mirrored from c-faq.com/osdep/filesize.html by HTTrack Website Copier/3.x [XR&CO'2008], Sat, 14 Mar 2009 07:59:02 GMT --></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -