由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 这个面试题有什么trick?
相关主题
How to read binary(data) file generated by Fortran in C/C++ (转载)how to read a sentence into a vector of string?
关于文件读取的C++ 问题?C++ Q 99-102 (转载)
有人能解释一下这段C++代码吗请教一个C++的问题
C++文件读取数值问题C++中如何数据文件一起build进exe文件中?
C++: How to read until the end of file?Urgent question
How to read a simple csv file in C++?C++ 在 windows 上 结果正确, 在 linux 上结果总是不一样,怎
C++读文本文件怎么判断换行?这样读多个文件对吗?
问一个C++文件读取的问题Re: [转载] 这样读多个文件对吗?
相关话题的讨论汇总
话题: 面试题话题: trick话题: 文件话题: 文件大小话题: bytes
进入Programming版参与讨论
1 (共1页)
g*****u
发帖数: 298
1
g*****u
发帖数: 298
2
就是要求写程序求一个文件的字符的平均值
unsigned char average(const char *filename)。
我能想到的地方有
文件不存在或者权限不对
计数器溢出(大文件,各种操作系统文件大小有何不同)
应该用什么数据类型和算法,用long double够不够。。。
请问还有什么别的考虑?
t****t
发帖数: 6806
3
考虑得差不多了.

【在 g*****u 的大作中提到】
: 就是要求写程序求一个文件的字符的平均值
: unsigned char average(const char *filename)。
: 我能想到的地方有
: 文件不存在或者权限不对
: 计数器溢出(大文件,各种操作系统文件大小有何不同)
: 应该用什么数据类型和算法,用long double够不够。。。
: 请问还有什么别的考虑?

f*****Q
发帖数: 1912
4
读到一半硬盘坏了, heyhey...

【在 g*****u 的大作中提到】
: 就是要求写程序求一个文件的字符的平均值
: unsigned char average(const char *filename)。
: 我能想到的地方有
: 文件不存在或者权限不对
: 计数器溢出(大文件,各种操作系统文件大小有何不同)
: 应该用什么数据类型和算法,用long double够不够。。。
: 请问还有什么别的考虑?

g*****u
发帖数: 298
5
如果中间某些扇区坏了这个应该怎么处理?是不是应该在开始的时候得到文件大小,如
果还没读到结尾就读不了了,把当前读了多少和文件大小比较,如果发现还没到末尾就
返回错误代码? 比如下面
ifstream fin( "temp.txt" );
unsigned long long num_bytes = 0;
while( fin.good() )
{
fin.get(ch);
num_bytes++;
.....
}
if ( num_bytes < file_length)
return -1;
如果中间某些扇区坏了那么good()应该返回0吧?我还没有实验过这种情况,不知道对
不对。
:读到一半硬盘坏了, heyhey...
t****t
发帖数: 6806
6
不用考虑这个

【在 g*****u 的大作中提到】
: 如果中间某些扇区坏了这个应该怎么处理?是不是应该在开始的时候得到文件大小,如
: 果还没读到结尾就读不了了,把当前读了多少和文件大小比较,如果发现还没到末尾就
: 返回错误代码? 比如下面
: ifstream fin( "temp.txt" );
: unsigned long long num_bytes = 0;
: while( fin.good() )
: {
: fin.get(ch);
: num_bytes++;
: .....

g*****u
发帖数: 298
7
thrust大侠能不能post个标准答案看看?

【在 t****t 的大作中提到】
: 考虑得差不多了.
g*****u
发帖数: 298
8
有个问题:C++标准里有没有肯定有64位的整型?似乎没有。long long或_int64不
是标准里的。那么这道题里面byte的计数器可以用double么?
还有,就算用unsigned long long来计数,如果文件大于2^64-1怎么办?
l***8
发帖数: 149
9
>> 如果文件大于2^64-1怎么办?
LOL you mean file size > 16,000,000 TB??? That is an expensive hard disk you have.
k**f
发帖数: 372
10

Right now I doubt there's any single file with size greater than 2^64 > 1.
84e19.
double has precision of 53 bits, so it can only precisely represent a
counter up to 2^53-1. Beyond that, the counter is no longer accurate to the
bytes.
That said, you may want to use fpos_t for the type of the file size counter,
the compiler should define a proper type suitable for the underlying
operating system.

【在 g*****u 的大作中提到】
: 有个问题:C++标准里有没有肯定有64位的整型?似乎没有。long long或_int64不
: 是标准里的。那么这道题里面byte的计数器可以用double么?
: 还有,就算用unsigned long long来计数,如果文件大于2^64-1怎么办?

g*****u
发帖数: 298
11
fpos_t似乎不能作为计数器,它只是给fsetpos()用的,不能用作加减乘除吧?
几个问题:
1. typedef __int64 fpos_t;
__int64 是C standard type么?
2. 当文件超过2GB时(在linux一般文件大小限制),get(),fread()等C库函数能正常
工作么?
3. 如果我想得到一个文件的大小,但是ftell()返回类型为long,这对大文件是不够
的。大文件在linux下需要LFS支持,我应该用哪些函数来得到文件大小?不同操作系统有不同的库吧?windows和linux,unix都分别应该怎么做?
btw,double的53bits是尾数,11bit的指数部分决定double能表示的最大的数字为差不
多2^(2^10-1),大约是10^308,对于一般文件是够用了。问题是我不清楚上面的问题2,
3。那个大侠最好能发个答案,多谢了。
1 (共1页)
进入Programming版参与讨论
相关主题
Re: [转载] 这样读多个文件对吗?C++: How to read until the end of file?
[转载] Re: [转载] 这样读多个文件对吗?How to read a simple csv file in C++?
读取数据求教C++读文本文件怎么判断换行?
问一个打开文件的问题问一个C++文件读取的问题
How to read binary(data) file generated by Fortran in C/C++ (转载)how to read a sentence into a vector of string?
关于文件读取的C++ 问题?C++ Q 99-102 (转载)
有人能解释一下这段C++代码吗请教一个C++的问题
C++文件读取数值问题C++中如何数据文件一起build进exe文件中?
相关话题的讨论汇总
话题: 面试题话题: trick话题: 文件话题: 文件大小话题: bytes