C fwrite会写出额外的零

时间:2016-05-25 13:18:43

标签: c

当我从result.bin文件中读取它时,它会输出我想要的值然后填充3个零然后下一个值等等我无法弄清楚为什么尝试不同的编译器(minigw cygwin和msdn)相同的结果。 还尝试在matlab中阅读它并使用库stdio,stdlib

中的函数

首先抱歉发布不好的帖子我匆忙这里是一个更好的更清晰的描述:

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

/*
 * 
 */
int main() {
    int output[4];
    int k=0;

    output[0]=1;
    output[1]=11;
    output[2]=2;
    output[3]=22;

    FILE *result;
    result=fopen("C:/Users/Mattias/Desktop/result.bin","w+b");
    fwrite(output,sizeof(int),4,result);
                        printf("%d\n", output[0]);
                        printf("%d\n", output[1]);
                        printf("%d\n", output[2]);
                        printf("%d\n", output[3]);

    fclose(result);


    result=fopen("C:/Users/Mattias/Desktop/result.bin","r+b");
    printf("%s\n", "whats written to result");

        int buffer1[3];
        long int size = sizeof(buffer1);

    if (!result)
    {
            printf("Unable to open file!");
        return 1;
    }
    for ( k=0; k <= 3; k++)
    {
            buffer1[k]=fgetc(result); 
            printf("%d\n", buffer1[k]);
    }
        fclose(result);

    return (EXIT_SUCCESS);
}

我从读取result.bin文件得到的输出是:

1 0 0 0 11 0 0 0 2 0 0 0 22 0 0 0 我读的时候想要的只是1 11 2 22 谢谢您的帮助 PS。我在fwrite中使用1,因为我知道iam handeling的数据只有1个字节大

1 个答案:

答案 0 :(得分:3)

试试这个......

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

int main() {
    int output[57];
    int k=0;

    output[0]=1;
    output[1]=11;
    output[2]=2;
    output[3]=22;

    FILE *result;
    result=fopen("C:/Users/ael09mol/Desktop/data/result.bin","w+b");
    fwrite(output,sizeof(int),4,result);

                        printf("%d\n", output[0]);
                        printf("%d\n", output[1]);
                        printf("%d\n", output[2]);
                        printf("%d\n", output[3]);
    fclose(result);

    return (EXIT_SUCCESS);
}

fwrite函数:第二个参数应该包含要复制的对象的大小,以字节为单位。

  

以下是fwrite()函数的声明。

     

size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE   *流)

     

参数

ptr − This is the pointer to the array of elements to be written.

size − This is the size in bytes of each element to be written.

nmemb − This is the number of elements, each one with a size of size bytes.

stream − This is the pointer to a FILE object that specifies an output stream.