当我从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个字节大
答案 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.