标签: fread

fwrite/fread 在 Windows 中运行不佳

我编写了一个程序,创建一个结构变量,然后使用函数将其写入文件中fwrite。返回的代码是1(我只写了一个结构体变量)。当我尝试使用函数读取文件时,fread它返回0并且变量未完全填充。

此问题仅针对 Windows。我在 Linux(Ubuntu 虚拟机)上尝试了相同的代码,效果很好。

结构如下:

struct MyStruct
{
    char comment[40];
    int nbpts;
    float time[4096];
    float value[4096];
};

FILE* fp = fopen(fileTrace, "w");
fwrite(&var, sizeof(struct MyStruct), 1, fp);


fread(&var, sizeof(struct MyStruct), 1, fp);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c fwrite fread

0
推荐指数
1
解决办法
2502
查看次数

fread 如何知道它最后停在哪里?

Fread 显然知道它最后停在的地方,我的意思是:

\n
while(fread(buffer, 1, 1, file))\n{\n    \xe2\x80\xa6\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n

该循环下次将在上次停止的地方继续。我假设它只是向前移动文件指针,但有人可以解释它是否\xe2\x80\x99s 完全一样吗?

\n

c fread

0
推荐指数
1
解决办法
322
查看次数

无法使用fread函数读取完整数据

我有一个图像文件,我试图从文件的第 54 个字节读取 8 个字节的数据并将其存储在字符数组(大小为 8 个字节)中。但在执行时,即使指针已从其起始位置向前移动了 8 个字节(从第 54 个字节到第 62 个字节),它也仅读取 8 个字节。当我尝试打印已成功保留的 1 个字节的数据时,它没有打印任何内容。

#include<stdio.h>
int main()
{
    FILE *fptr_stego;
    FILE *fptr_text;
    size_t f_size = 0;
    char str[8];

    // opening image file
    fptr_stego = fopen("stego.bmp", "r");
    if(fptr_stego == NULL)
    {   
        printf("FAILED to open stego file\n");
        return 0;
    }   

    // opening text file
    fptr_text = fopen("decode.txt", "w");
    if(fptr_text == NULL)
    {   
        printf("FAILED to open text file\n");
        return 0;
    }   

    printf("Successfully opened both files\n");

    // shifting pointer to 54th …
Run Code Online (Sandbox Code Playgroud)

c fread

0
推荐指数
1
解决办法
64
查看次数

为什么第二次使用 fread() 不是从头而是从第一次 fread() 读取的结尾读取文件?

我想hdrin.wav文件中的数据填充(struct) 变量,我想将文件的前 64 个字节复制in.wav到另一个文件 ( out.wav)。

但!fread()第二次使用时,in.wavfread()第一次使用结束的地方开始复制。为什么?

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

typedef struct FMT
{
    char        SubChunk1ID[4];
    int         SubChunk1Size;
    short int   AudioFormat;
    short int   NumChannels;
    int         SampleRate;
    int         ByteRate;
    short int   BlockAlign;
    short int   BitsPerSample;
} fmt;

typedef struct DATA
{
    char        Subchunk2ID[4];
    int         Subchunk2Size;
    int         Data[441000]; // 10 secs of garbage. he-he)
} data;

typedef struct HEADER
{
    char        ChunkID[4];
    int         ChunkSize;
    char        Format[4];
    fmt         S1; …
Run Code Online (Sandbox Code Playgroud)

c file binary-data fread

-1
推荐指数
1
解决办法
4583
查看次数

功能"fread"导致分段错误

我对此感到不安fread; 这是非常基础的,但我无法找到答案.

#include <stdio.h>
#include <stdlib.h>
void main () 
{
    int i;
    FILE *fp;
    char *re;
    fp = fopen("/net2/192.168.42.151/stud3/2013/dobo1298/data.txt","r");
    i = sizeof(char);
    printf("%d",i);
    re = calloc(10,i);
    fread(re,i,1,fp);
    printf("%s",*re);
}
Run Code Online (Sandbox Code Playgroud)

c sizeof fread

-1
推荐指数
1
解决办法
90
查看次数

fread返回0并且无法在Windows机器上打开db文件.可以找不到文件吗?或者是权限?

当fread加载db文件"ERROR!无法加载数据库"时,我正在做一个关于C(Learn C The Hard Way:Ex17)和Database_load函数的教程.被扔了.为什么不能读取数据库?该文件位于目录中.可以找不到文件吗?或者是否需要更改权限?

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#define MAX_DATA 512
#define MAX_ROWS 100

struct Address {
    int id;
    int set;
    char name[MAX_DATA];
    char email[MAX_DATA];
};
struct Database {
    struct Address rows [MAX_ROWS];
};
struct Connection {
    FILE *file;
    struct Database *db;
};
void die (const char *message)
{
    if(errno) {
        perror(message);
    } else {
        printf("ERROR!\t%s\n", message);
    }

exit(1);
}
void Address_print(struct Address *addr)
{
    printf("%d %s %s\n", addr->id, addr->name, addr->email); …
Run Code Online (Sandbox Code Playgroud)

c windows fopen fread

-1
推荐指数
1
解决办法
227
查看次数

从C中的文件读取整数时遇到麻烦

我在尝试从文本文件中读取整数时遇到了麻烦:

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

int main()
{  
    int op;

    /* Open file for both reading and writing */
    FILE *d = fopen("intento1.txt", "r");
    FILE *f = fopen("bubbletry.txt", "w+");

    /* Read and display data */
    fread(&op, 4, 1, d);

    printf("%d\n", &op);
    fclose(d);
    /* Write data to the file */
    fprintf(f,"%d\n",&op);

    fclose(f);

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

"intento1.txt"中的第一个数字是30771,但写在"bubbletry.txt"的文本是926363699.你能告诉我为什么会这样吗?

c printf fread

-1
推荐指数
1
解决办法
64
查看次数

fread() 可以用来确定文件类型吗?

我试图用来fread()确定文件是否是 jpeg,我的想法是使用fread()读取文件的标题以确保它是 jpeg,然后,如果是 - 复制文件。我知道标准的 jpeg 标头是0xff 0xd8 0xff 0xe(0 to f),所以我制作了一个程序来读取文件的前四个字节。

#include <stdio.h>
#include <stdint.h>

typedef uint8_t BYTE;

int main (int argc, char *argv[])
{
    FILE *in = fopen(argv[1], "rb");
    
    FILE *out = fopen("output.jpg", "wb");
    
    BYTE buffer [4096];
    
    while (fread(buffer, 1, sizeof(buffer), in))
    {
        if ((buffer[0] == 0xff) & (buffer[1] == 0xd8) & (buffer[2] == 0xff) & ((buffer[3] & 0xf0) == 0xe0))
        {
            fwrite(buffer, 1, sizeof(buffer), out);
        }
    }
    
    fclose(in);
    fclose(out);
}
Run Code Online (Sandbox Code Playgroud)

但是,在运行程序后,当我尝试打开 …

c fwrite fread

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

c 中的 fread 读取的内容超出了指示的内容

我正在尝试编写一个程序,为 .wav 文件添加效果。

该计划应该:

  1. 读取 .wav 文件

    • 解析标头
    • 读取数据
  2. 操纵数据

  3. 创建一个新的 .wav 文件 -
    • 写标题
    • 写入新数据

我陷入了一些奇怪的函数问题fread()- 当我试图读取 4 个字节到我定义的字符数组(大小为 4 个字节)时 - 我得到了单词 + 垃圾。

如果我尝试以相同的方式读取 2 或 3 个字节 - 一切正常。

我尝试在两种情况下(当我读取 2/3 字节时与当我读取 4 字节时)用 while 循环打印数组的内容,直到 '\n' 而不是 printf("%s") - 我得到了相同的结果(第一种情况写字符串,第二种情况写字符串+垃圾)。另外,我写回标题并复制数据 - 创建的文件不是同一首歌!它确实打开了 - 所以标头很好,但数据是垃圾。我会很高兴听到一些关于可能原因的想法。我真的很困惑,请帮助我! 问题 - 输出的打印屏幕

c fread

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

标签 统计

c ×9

fread ×9

fwrite ×2

binary-data ×1

file ×1

fopen ×1

printf ×1

sizeof ×1

windows ×1