var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
for (var key in p) {
if (p.hasOwnProperty(key)) {
console.log(key + " = " + p[key]);
}
}
<p>
Output:<br>
p1 = values1<br>
p2 = values2<br>
p3 = values3
</p>
Если Вы находитесь в Windows, Вы хотите GetFileSizeEx (MSDN). Возвращаемое значение является интервалом на 64 бита.
На (странице справочника) linux stat64 корректно. fstat, если Вы работаете с FILE*.
Этот код работает на меня в Linux:
int64_t bigFileSize(const char *path)
{
struct stat64 S;
if(-1 == stat64(path, &S))
{
printf("Error!\r\n");
return -1;
}
return S.st_size;
}
(украденный от glibc руководства)
int fgetpos64 (FILE *stream, fpos64_t *position)
Эта функция подобна fgetpos, но положение файла возвращается в переменной типа fpos64_t
на который указывает положение.
Если источники компилируются с _FILE_OFFSET_BITS == 64
на машине на 32 бита эта функция доступна под именем fgetpos
и так прозрачно заменяет старый интерфейс.
Статистика всегда лучше, чем fseek для определения размера файла, это перестанет работать безопасно на вещах, которые не являются файлом. Размеры файла на 64 бита являются операционной определенной вещью, на gcc можно поместить "64" на конец команд, или можно вынудить это выполнить все стандартные вызовы 64 по умолчанию. См. свое руководство компилятора для деталей.
На Linux, по крайней мере, Вы могли использовать lseek64 вместо fseek.
Игнорируйте все ответы, в которых встречается цифра «64». В Linux вы должны добавить -D_FILE_OFFSET_BITS = 64
в свой CFLAGS и использовать функции fseeko
и ftello
, которые принимают / возвращают значения off_t
. вместо long
. Это не часть C, а POSIX. Другим (не Linux) системам POSIX могут потребоваться другие параметры, чтобы гарантировать, что off_t
является 64-битным; проверьте свою документацию.