ファイルを作成してデータを書き込んだ後、ファイルのサイズを取得しようとしています。実際のファイル サイズに対応していないように見える値を取得します。これが私のプログラムです。ファイル サイズをビット、バイト、キロバイト、メガバイトで表示する方法を教えてください。私によると、ファイル サイズは 288 ビット、36 バイト、0.03515626 キロバイト、および 0.000034332 メガバイトである必要があります。
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#define PERMS 0777
int main(int argc, char *argv[])
{
int createDescriptor;
int openDescriptor;
char fileName[15]="Filename1.txt";
umask(0000);
if ((openDescriptor = creat(fileName, PERMS )) == -1)
{
printf("Error creating %s", fileName);
exit(EXIT_FAILURE);
}
if(write(openDescriptor,"This will be output to testfile.txt\n",36 ) != 36)
{
write(2,"There was an error writing to testfile.txt\n",43);
return 1;
}
if((close(openDescriptor))==-1)
{
write(2, "Error closing file.\n", 19);
}
struct stat buf;
fstat(openDescriptor, &buf);
int size=buf.st_size;
printf("%d\n",size);
printf("%u\n",size);
return 0;
}