标签: fwrite

C/C++向stdout发送多个字节的最佳方法

分析我的程序和功能打印需要花费大量时间来执行.如何将"原始"字节输出直接发送到stdout而不是使用fwrite,并使其更快(需要同时将print()中的所有9字节发送到stdout)?

void print(){
    unsigned char temp[9];

    temp[0] = matrix[0][0];
    temp[1] = matrix[0][1];
    temp[2] = matrix[0][2];
    temp[3] = matrix[1][0];
    temp[4] = matrix[1][1];
    temp[5] = matrix[1][2];
    temp[6] = matrix[2][0];
    temp[7] = matrix[2][1];
    temp[8] = matrix[2][2];

    fwrite(temp,1,9,stdout);
Run Code Online (Sandbox Code Playgroud)

}

矩阵全局定义为无符号字符矩阵[3] [3];

c c++ optimization stdout fwrite

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

在文件描述符上使用fwrite /将文件描述符转换为文件指针

最近,我一直在研究一些小数据序列化演示.但是,我想知道如何将二进制数据从结构传输到文件描述符.

我知道这样做的唯一(简单)方法是通过fwrite(如果write这样,那么请说出来),那么是否有:

A)fwrite对文件描述符使用的调用?

要么

B)一种创建FILE *现有文件描述符/套接字的方法,就像fileno

c sockets linux serialization fwrite

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

即使文件不存在,PHP fwrite总是返回要写入的字节数,这是预期的行为吗?

我有以下示例代码

<?php
`echo test > /tmp/test.txt`;
$f=fopen("/tmp/test.txt","w+");
`rm /tmp/test.txt`;
var_dump(fwrite($f,"test"));
fclose($f);
file_get_contents("/tmp/test.txt");
Run Code Online (Sandbox Code Playgroud)

它创建一个文件,打开一个指向它的指针,删除该文件然后尝试写入它.现在我希望fwrite返回false或0,因为不会写入任何数据,但它会产生以下输出

int(4)

Warning: file_get_contents(/tmp/test.txt): failed to open stream: No such file or directory in /Stuff/tmp/test3 on line 7
Run Code Online (Sandbox Code Playgroud)

所以fwrite显然成功但file_get_contents按预期失败.

fwrite的预期行为是否返回要写入的字节数?如果是这样,我如何测试写入是否真的成功?

这是用php 5.3.3

php fwrite

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

PHP中的并发Fwrite?

我有一个fwrite函数来写入延迟插入到数据库的日志.

我们的访问率为每小时20,000次访问.

所以每个fwrite是0.18s.

我的问题是,当有2个或3个访问者同时进入时,PHP是否可能错过几个日志?

如果是的话那怎样才能让这个并发?

我的代码只是正常的Fopen fwrite fclose.

php logging fwrite

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

如何导出带有特殊字符的CSV?

我正在尝试从数据库中导出一些信息,但是当创建CSV文件时,特殊字符看起来像这样 Categoría

这是我用来导出的代码

function exportemail() {
global $wpdb;
    $content = "No.,Nombre,Empresa,Categoría,Estado de Prospecto,Correo,Teléfono,Dirección,Referido por,País,Sitio web,Contacto Alternativo,Trabajo de Contacto Alternativo,Correo de Contacto Alternativo,Teléfono de Contacto Alternativo,Dirección de Contacto Alternativo,País de Contacto Alternativo,Sitio Web de Contacto Alternativo,Notas,Rung";

    if(trim($_GET['tab']) != "")
    {
        $sql = "SELECT * FROM ".$wpdb->prefix."crm WHERE
              category LIKE '%".$wpdb->escape($_GET['tab'])."%'
              ORDER BY name";
    }
   elseif (trim($searcharea) != '') {
        $sql = "SELECT * FROM ".$wpdb->prefix."crm WHERE
            name LIKE '%".$wpdb->escape($_GET['q'])."%'
            OR last_name LIKE '%".$wpdb->escape($_GET['q'])."%'
            OR category LIKE '%".$wpdb->escape($_GET['q'])."%'
            OR business LIKE '%".$wpdb->escape($_GET['q'])."%' …
Run Code Online (Sandbox Code Playgroud)

php sql fwrite export-to-csv

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

如何将值传递给struct变量然后在文件中写入结构?

如何将值传递给struct变量我试图从用户那里获取员工信息,然后将其写入文件中,但我segmentation fault输入了员工姓名.这是我的代码.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct record_em{
    int id;
    char name[20];
    int salary;
    int age;
};

int main( void )
{
    struct record_em employee;
    FILE *fp;
    int id, salary, age;
    char name[20];
    int n=1;

    fp = fopen("empRecord.dat","a");
    while(n==1){
        printf("\nEnter Employee ID\n");
        scanf("%d",&id);
        employee.id=id;
        printf("\nEnter Employee Name\n");
        scanf("%s",name);
        employee.name=name;
        printf("\nEnter Employee Salary\n");
        scanf("%d",&salary);
        employee.salary=salary;
        printf("\nEnter Employee Age\n");
        scanf("%d",&age);
        employee.age=age;
        fwrite(&employee,sizeof(employee),1,fp);
        printf("Enter 1 to add new record \n");
        scanf("%d",&n);
    }

    fclose(fp);

    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

输出(来自评论):

Fatmahs-MacBook-Air:~ fatmah$ …

c struct file fwrite segmentation-fault

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

fwrite不会向stdout打印任何东西

当我运行这个小代码并在控制台上输入3个整数时,由于fwrite语句,它不会打印出来.只有在我继续按下输入一段时间后才打印.救命?PS:学习比scanf和printf更快的方法.

#include<stdio.h>
int main(){
    int size[3];
    fread(&size,sizeof(int),3,stdin);
    fwrite(&size,sizeof(int),3,stdout);
    fflush(stdout);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c stdout fwrite

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

向量返回分段错误的Fwrite和Fread

我用c ++编写了代码,用于加密和解密.第一个代码在向量中创建一个输出,然后使用fwrite将其写入文件,第二个代码使用fread从第一个代码读取输出.以下是我的代码片段:

第一个代码:

.....
string a;
vector<long long int> c;

cout << "message to be encrypted = ";
cin >> a;   
cout << endl;

cout << "Encrypted message : ";
for (i=0;i<a.size();i++) 
{
    x=(int)a.at(i);
    cout << x << " ";
    c.push_back(powerMod(x,e,n));
}

for (i=0;i<c.size();i++) 
{
    //cout << char(c.at(i));
}
cout << endl;

//Write ciphertext c to a file
FILE * pWrite;
pWrite = fopen ("ciphertext", "w");
fwrite (&c , sizeof(c), 1, pWrite);
fclose (pWrite);
Run Code Online (Sandbox Code Playgroud)

输出是:

message to be encrypted = …
Run Code Online (Sandbox Code Playgroud)

c++ vector fwrite fread

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

fwrite无法写入值10(0x0A)

我正在尝试从头开始创建BMP文件,当时我发现了一个我无法解释的奇怪错误.我在这个极简主义程序中找出了错误:

int main()
{
    FILE* ptr=NULL;
    int success=0,pos=0;
    ptr=fopen("test.bin","w");
    if (ptr==NULL)
    {
        return 1;
    }
    char c[3]={10,11,10};
    success=fwrite(c,1,3,ptr);
    pos=ftell(ptr);
    printf("success=%d, pos=%d\n",success,pos);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

success=3, pos=5
Run Code Online (Sandbox Code Playgroud)

使用test.bin文件的十六进制转储:

0D 0A 0B 0D 0A
Run Code Online (Sandbox Code Playgroud)

简而言之,无论你输入什么值而不是11(0x0B),fwrite都会正确写入.但由于某种原因,当fwrite遇到10(0x0A) - 并且恰好是这个值时 - 它会写入0D 0A,即2个字节,尽管我在fwrite参数中每次写入时明确指定了1个字节.因此,3个字节写入,如可在可见success变量,神秘5ftell结果.

有人可以告诉我这里到底发生了什么......为什么10,为什么不97或28?

非常感谢您的帮助!

编辑:哦等等,我想我有一个想法......这不是与Unix上的0A和Windows上的0D 0A以及编译器的一些内部特征转换为另一个相关联吗?我怎么能强制它写出我想要的字节呢?

c fwrite

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

fwrite阻塞,直到数据写入磁盘?

fwrite()在将要写入磁盘的数据移交给操作系统后,该函数是否返回,或者仅在数据实际物理写入磁盘后才返回?

对于我的情况,我希望这是第一种情况,因为我不想等到所有数据都被物理写入磁盘.我希望另一个操作系统线程在后台传输它.

在这种特殊情况下,我对Windows 10的行为感到好奇.

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fwrite

c++ windows fwrite

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