1

lseekファイルのサイズを見つけるためだけに使用してlseekおり、ファイルの実際のサイズよりも少ないバイトを返します。コードは正しいと思いますが、なぜそれが起こるのか説明できません。

初めてプログラムを実行したとき、うまくいきました。次に、ファイルにデータを追加して、サイズを変更しました。それ以来、新しいファイルでプログラムを再度実行すると、結果は常に古いファイルのサイズになります。

どんな助けでも大歓迎です!

int main(int argc,char* argv[]){
    int out_file_size=0;
    int fd_prognameout;

    fd_prognameout=open(argv[1],O_RDWR | O_CREAT,00700);

    if(fd_prognameout == -1){
        perror("Error:");
        return(0);
    }

    lseek(fd_prognameout,0,SEEK_SET);
    out_file_size = lseek(fd_prognameout,0,SEEK_END);
    lseek(fd_prognameout,0,SEEK_SET);

    printf("The size of out file is: %d\n",out_file_size);
    
    close(fd_prognameout);

    return(0);
}
4

1 に答える 1