标签: fwrite

写入更多文件的最佳方式是什么,而不是内核允许一次打开?

我有一个非常大的二进制文件,我需要根据输入文件中的id创建单独的文件.有146页输出的文件,我使用cstdlibfopenfwrite.FOPEN_MAX是20,所以我无法同时打开所有146个输出文件.我还想最小化打开和关闭输出文件的次数.

如何有效地写入输出文件?

cstdlib由于遗留代码,我还必须使用该库.

可执行文件还必须是UNIX和Windows跨平台兼容的.

c c++ performance fopen fwrite

3
推荐指数
1
解决办法
460
查看次数

fopen fprintf dosnt只有在关闭后才能写入文件

如何启用写入文件befor关闭它,我有这个代码写入文件,是这样做,但只有在我关闭应用程序后,它才能让干扰器成为简单记录器的一部分.我需要的是看到写更新(使用tail -f)

void init(char *pfileName)
    {
        if(pfileName != NULL)
        {
            fp = fopen(pfileName, "a+");
            if(fp != NULL)
                fseek(fp, 0, SEEK_END);
        }
    }

    void close()
    {
        if(fp != NULL)
            fclose(fp);
        fp = NULL;
    }

void write(char *pType, std::string pMsg, char *pFileName, int lineNo)
    {
        if(fp != NULL)
        {
            fprintf(fp,"%s %s %s %s %d %s\n", pType, __DATE__, __TIME__, pFileName, lineNo, pMsg.c_str());

        }
    }
Run Code Online (Sandbox Code Playgroud)

c fopen fwrite

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

使用jQuery AJAX和PHP将div的内容保存到新文件

我正在尝试将div的内容保存到新的html文件中.我正在使用jQuery AJAX将数据发送到php.
但是,当前表单中的php会写一个空文件.

HTML:

<div id="data2save">
     <span>data1</span>
     <span>data2</span>
     <span>data3</span>
     <span>data4</span>
</div>

<input type="button" value="save" id="save">
Run Code Online (Sandbox Code Playgroud)

JQuery的:

 $("#save").live("click",function() {

    var bufferId =$("#data2save").html();

            $.ajax({
                 method : "POST",
                 url : "saver.php",
                 data: {id : bufferId},
                 dataType: "html",
                 success: function(data){ 
                 alert("ok");  
                 }
                 });
 });
Run Code Online (Sandbox Code Playgroud)

PHP:

 <?php
$handle = fopen("test.html", 'w+');
$data = $_POST['data'];
if($handle)
{

if(!fwrite($handle, $data ))
echo "ok";
}

?>
Run Code Online (Sandbox Code Playgroud)

php ajax jquery fwrite

3
推荐指数
1
解决办法
4395
查看次数

在C中使用带有相同标志的fopen打开文件

我无法理解这段代码的输出?

int main()
{
    FILE* f, *f1;
    f = fopen("mytext", "w");
    if ((f1 = fopen("mytext", "w")) == 0)
       printf("unable\n");
    fprintf(f, "hello\n");
    fprintf(f1, "hi\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT是mytext文件中的hello.为什么不写?"无法"不打印到标准输出.

c fopen fwrite

3
推荐指数
1
解决办法
2879
查看次数

C编程fwrite跳转到文件末尾

我正在写一个C模块,我遇到了一个我以前从未见过的有趣问题.

// Many other operations before this point
fseek(samples_file, 0, SEEK_SET);
printf("ftell A1 %llu\n", ftell(samples_file));
count = fwrite(channel_buffer+chan_type.size*set_index, 1, chan_type.size, samples_file);
printf("count %llu\n", count);
printf("ftell A2 %llu\n", ftell(samples_file));
// Many more operations to come after this point
Run Code Online (Sandbox Code Playgroud)

当我运行模块时,我得到如下打印输出:

ftell A1 0
count 8
ftell A2 6018
Run Code Online (Sandbox Code Playgroud)

我已将文件指针设置为文件的开头.当我写一些数据时,它应该在我寻找的位置写出数据,然后用写入的字节数增加文件位置(在本例中为8).然而,当我做一个ftell时,似乎该位置突然跳到6018(恰好是文件的原始大小加上8).

为什么会发生这种情况,如何防止这种行为?

c c++ fseek fwrite ftell

3
推荐指数
1
解决办法
1006
查看次数

在 PHP 中,为什么不写入 test.txt?

我的代码是

<?php
$fp = fopen('test.txt', "a+");
fwrite($fp, 'Cats chase mice');
fclose($fp);
?>
Run Code Online (Sandbox Code Playgroud)

但 test.txt 仍然是空的。我没有看到任何错误,我不明白为什么它不写。

php file fwrite

3
推荐指数
1
解决办法
7293
查看次数

C++ fwrite()写的比预期多

复制文件时遇到问题

码:

    bool done;
    FILE* fin;
    FILE* fout;
    const int bs = 1024*64;//64 kb
    char* buffer[bs];
    int er, ew, br, bw;
    long long int size = 0;
    long long int sizew = 0;
    er = fopen_s(&fin,s.c_str(),"rb");
    ew = fopen_s(&fout,s2.c_str(),"wb");
    if(er == 0 && ew == 0){
        while(br = fread(buffer,1,bs,fin)){
            size += br;
            sizew += fwrite(buffer,1,bs,fout);
        }
        done = true;
    }else{
        done = false;
    }
    if(fin != NULL)fclose(fin);
    if(fout != NULL)fclose(fout);
Run Code Online (Sandbox Code Playgroud)

以某种方式fwrite写入整个缓冲区忽略计数值(br)

一些例子如何:

Copying 595 file of 635 DONE. 524288/524288 B …
Run Code Online (Sandbox Code Playgroud)

c fwrite

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

如何用 fwrite() 中的值替换 file_get_contents() 中的变量?

我有大表格,用户写入的所有数据都以特殊方式处理。提交后我的表单应加载模板 php 文件并将表单中的数据添加到其中。所以我的应用程序处理 POST 数据,通过加载 php 模板file_get_contents(),并将fwrite()数据写入新的 php 文件。

但问题来了。php 模板文件中的变量按原样编写。但我需要用提交和解析的表单 POST 标头中的值替换 php 模板中的变量。

有谁知道,该怎么做?

我的简化代码:

-- form.php
<Form Action="process.php" Method="post">
<Input Name="Name1" Type="text" Value="Value1">
<Button Type="submit">Submit</Button>

-- process.php
$Array=array(
"Name1","Name2",//...
);
if(!empty($_POST)){
foreach($Array as $Value){
if(!empty($_POST[$Value])){
$Value=$_POST[$Value];
}}}
...
$Template=file_get_contents("template.php");
$File=fopen("../export/".$userid.".html","w+");
fwrite($File,$Template);
fclose($File);

-- template.php
<!Doctype Html>
...
Name1: <?=$Name1?><Br>
...
Run Code Online (Sandbox Code Playgroud)

我的目标:

-- 135462.html
<!Doctype Html>
...
Name1: Value1
...
Run Code Online (Sandbox Code Playgroud)

php forms fwrite file-get-contents

3
推荐指数
1
解决办法
2549
查看次数

为什么我的fwrite命令只运行一次?

fwrite用来存储一个叫QVector的值rawData.

这是我的代码:

unsigend short* ptr = rawdata();    

FILE * pFile;
pFile = fopen("arrayValues.txt", "a");
fwrite(ptr, sizeof(unsigned short), sizeof(rawData), pFile);
fclose(pFile);
Run Code Online (Sandbox Code Playgroud)

上面的程序"工作"意味着我能够写入文件,当我用十六进制编辑器打开文件时,我可以看到那里的东西.但是,它只写一帧的值然后停止,即使程序一遍又一遍地调用该方法.

更奇怪的是,如果我关闭程序并再次运行它,它将打开文件(已经有最后一次运行的值),并在最后添加一组新的值.所以我知道我在追加模式下打开文件.

c++ file fwrite

3
推荐指数
1
解决办法
81
查看次数

如何尽可能快地输出固定缓冲区?

示例代码:

#include <stdio.h>
#include <unistd.h>
#include <sched.h>
#include <pthread.h>

int
main (int argc, char **argv)
{

  unsigned char buffer[128];
  char buf[0x4000];
  setvbuf (stdout, buf, _IOFBF, 0x4000);
  fork ();
  fork ();

  pthread_t this_thread = pthread_self ();

  struct sched_param params;

  params.sched_priority = sched_get_priority_max (SCHED_RR);

  pthread_setschedparam (this_thread, SCHED_RR, &params);


  while (1)
    {
      fwrite (&buffer, 128, 1, stdout);
    }
}
Run Code Online (Sandbox Code Playgroud)

该程序打开 4 个线程,并在 stdout 上输出“buffer”的内容,该内容在 64 位 cpu 上为 128 字节或 16 个长整型。

如果我然后运行:

./写测试| pv -ptebaSs 800G >/dev/null

我得到的速度约为 7.5 GB/s。

顺便说一句,如果我这样做的话,这与我得到的速度是一样的:

$ …
Run Code Online (Sandbox Code Playgroud)

c unix linux macos fwrite

3
推荐指数
1
解决办法
591
查看次数

标签 统计

fwrite ×10

c ×6

c++ ×3

fopen ×3

php ×3

file ×2

ajax ×1

file-get-contents ×1

forms ×1

fseek ×1

ftell ×1

jquery ×1

linux ×1

macos ×1

performance ×1

unix ×1