非常简单的fread fwrite问题?

时间:2015-12-08 06:19:33

标签: c

我一直试图弄清楚如何使用fread和fwrite读取文件指针无济于事。我创建了一个非常简单的程序来读取文件,使用fseek和ftell来确定大小,最后将第一个文件的内容写入第二个文件。我的代码编译但没有产生输出,我认为这是由于我的错误的fwrite函数??

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

int main(int argc, char **argv)
{
    FILE *infp;
    FILE *outp;
    char *str;
    size_t place;
    infp = fopen(argv[1], "r");
    if (infp==NULL) 
    {
        fputs ("File error",stderr); 
        exit (1);
    }
    outp = fopen(argv[2], "w");
    int count = 0;
    fseek(infp,0,SEEK_END);
    long size = ftell(infp);
    rewind(infp);
    str = (char *)malloc(sizeof(char)*size);
    if (str == NULL)
    {
        fputs("Memory error",stderr);
        exit(2);
    }
    place = fread(str, sizeof(char), size, infp);
    if (place != size) 
    {
        fputs ("Reading error",stderr); 
        exit (3);
    }
    fwrite(str, 1, place, infp);
    fclose(infp);
    fclose(outp);
    free(str);
}

1 个答案:

答案 0 :(得分:0)

你有一个错字。变化:

fwrite(str, 1, place, infp);

要:

fwrite(str, 1, place, outp);