标签: fread

PHP:fread的字节数

假设我读了这样的字节数:

$data = fread($fp, 4096);
Run Code Online (Sandbox Code Playgroud)

因为fread如果它到达文件的末尾会停止读取,我怎么能确切地知道读了多少?会strlen($data)工作吗?或者这可能是错的?


我想要完成的是读取一些字节,然后在我阅读之前回到原来的位置.我试图避免使用算术(ftell,fread,ftell,subract, fseek),因为文件可能是大于PHP_INT_MAX和潜在的混乱,向上.我想要的只是做fseek($fp, -$bytes_read, SEEK_CUR),但为此我需要知道我刚读了多少字节...

php io fread

2
推荐指数
1
解决办法
2506
查看次数

如何在C中使用fread?

我的文本文件包含以下内容:

12345678901222344567
Run Code Online (Sandbox Code Playgroud)

然后我用这段代码来阅读内容:

FILE * pFile;
  int c;
  char buffer [256];
  pFile = fopen ("myfile.txt","r");
  int a[50] = {0};
  fread(a, sizeof(a[0]), 5, pFile);
  fclose(pFile);
  for (c = 0; c < 5; c++)
  {
    printf("%d\n", a[c]);
  }
Run Code Online (Sandbox Code Playgroud)

我得到了结果:

在此输入图像描述

我无法解释自己为什么会得到这样的结果.

c fread

2
推荐指数
2
解决办法
1774
查看次数

python os.path.getsize与len(f.read())不同

我有一个文件file.txt

print os.path.getsize(filename)
Run Code Online (Sandbox Code Playgroud)

输出

6510

并做

print len(open(filename).read())
Run Code Online (Sandbox Code Playgroud)

抓住我

6355

怎么会 ?我正在使用Windows 7.如果我查看Windows资源管理器中的文件属性,它说

大小:6.35 KB(6,510字节)

python file fread

2
推荐指数
1
解决办法
1344
查看次数

使用php读取波斯语(Unicode字符)文本文件

我在下面的代码的帮助下阅读一个波斯语文本文件(使用PHP):

/* Reading the file name and the book (UTF-8) */
if(file_exists($SourceDirectoryFile))
{
        $NameBook  = "name.txt";
        $AboutBook = "about.txt";

        $myFile = "Computer-Technolgy/2 ($i)/".$NameBook;
        $fh = fopen($myFile, 'r');
        $theData = fread($fh, filesize($myFile));
        fclose($fh);
        echo 'Name file: '. $theData.'<hr/>';
}
Run Code Online (Sandbox Code Playgroud)

name.txt文件内容:

????? ???? ??? ????????? (LEARNING NETWORK)
Run Code Online (Sandbox Code Playgroud)

姓名档案: (学习网络)

php fopen utf-8 fread

2
推荐指数
1
解决办法
2935
查看次数

相当于Matlab的fread()'float64'在Python中

我有一个二进制文件,我可以在MATLAB中打开,但无法在Python中打开.二进制文件被编码为'双浮点',因此由MATLAB读取,具有以下行:

fread(fopen(fileName), 'float64'); 
Run Code Online (Sandbox Code Playgroud)

在Python中,我不确定如何复制这一行.我认为使用Numpy将是一个很好的起点,所以我尝试了以下几行,但没有得到我预期的输出.每行有6个数字,我只得到第一个和一个'NaN'.

from numpy import * 
f = open('filename', 'rb') 
a = fromfile(f, double64, 10)
print a
Run Code Online (Sandbox Code Playgroud)

对此的任何帮助都将非常感激; 我在下面的评论中发布了二进制文件和MATLAB解析文件.我也不需要特别使用Numpy,我对任何基于Python的解决方案都持开放态度.谢谢.

python matlab numpy fread

2
推荐指数
1
解决办法
1992
查看次数

fread为空(0kb)文件的行为

以下是在读取空文件时给出分段错误的示例代码.

#include <stdio.h>

main()
{
    FILE *fp;
    int i = 0;
    char buffer[20];

    printf("1\n");
    fp = fopen("/home/amadhab/aa", "r+");
    printf("2\n");
    i = fread(buffer, 1, 1, fp);
    printf("3\n");
    printf("i = %d\n", i);
}
Run Code Online (Sandbox Code Playgroud)

给o/p一个

1
2
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

确实fread()无法读取空(0KB)文件?

c file fread

2
推荐指数
1
解决办法
635
查看次数

fread是如何工作的?

据我所知,在各种编程语言中,例如MatLab和C++,fread被用作读取二进制文件的一种方式.我想知道这究竟是如何起作用的?特别是,fread如何知道从二进制文件中读入了一个新数字; 是否有某种分隔符?

c++ matlab fread

2
推荐指数
1
解决办法
293
查看次数

为什么这个缓冲区指向不可寻址的字节?

编辑:感谢repliers我已将fread更改为(... sizeof buffer,1,...),但现在我在valgrind中收到此错误:

==2409== Invalid read of size 4
==2409==    at 0x51AB8D0: fread (iofread.c:41)
==2409==    by 0x4007B6: main (recover2.c:31)
==2409==  Address 0x5502000 is not stack'd, malloc'd or (recently) free'd
==2409== 
==2409== Use of uninitialised value of size 8
==2409==    at 0x51B8787: _IO_sgetn (genops.c:495)
==2409==    by 0x51AB93E: fread (iofread.c:42)
==2409==    by 0x4007B6: main (recover2.c:31)
==2409== 
==2409== Invalid read of size 8
==2409==    at 0x51B8787: _IO_sgetn (genops.c:495)
==2409==    by 0x51AB93E: fread (iofread.c:42)
==2409==    by 0x4007B6: main (recover2.c:31)
==2409==  Address 0x40 is not …
Run Code Online (Sandbox Code Playgroud)

c sizeof fread

2
推荐指数
1
解决办法
871
查看次数

将0字节转换为NULL指针是否安全?

在我的环境中,以下代码运行正常,但它是否可以保证好?

FILE *file = fopen("in", "r");
int *read_to = NULL;
size_t count = 0;
size_t read = fread(read_to, sizeof(*read_to), count, file);
fclose(file);
Run Code Online (Sandbox Code Playgroud)

分别

FILE *file = fopen("out", "w");
int *write = NULL;
size_t count = 0;
size_t written = fwrite(write, sizeof(*write), count, file);
fclose(file);
Run Code Online (Sandbox Code Playgroud)

c null fread language-lawyer

2
推荐指数
1
解决办法
455
查看次数

在Windows中,即使没有待处理的输入,如何强制C的fread返回?

在具有两个线程的Windows程序中:thread1thread2.

thread1fread(buffer, 1, 10, stdin)等待输入的呼叫中被阻止时,是否可以执行某些操作thread2以强制fread返回?

到目前为止,我打过电话fclose(stdin)thread2,但它似乎并没有工作.程序在fclose调用时卡住,直到stdin流中有一些输入为止.

我想要实现的是thread1优雅地终止而不是仅仅用它来杀死它TerminateThread,因为最后还有一些工作thread1需要做.

另一件需要考虑的事情是它stdin是命名管道的一端.我无法控制管道另一端的程序.
我需要的是断开我的程序与管道的末端(stdin在这种情况下).

c winapi stdin fread eof

2
推荐指数
1
解决办法
141
查看次数

标签 统计

fread ×10

c ×5

file ×2

matlab ×2

php ×2

python ×2

c++ ×1

eof ×1

fopen ×1

io ×1

language-lawyer ×1

null ×1

numpy ×1

sizeof ×1

stdin ×1

utf-8 ×1

winapi ×1