最後の行に "int format、different type arg(arg 4)"エラーが表示されます。私はちょうどintにキャストすべきか、これを処理する良い方法がありますか?キャストoff_t to int
struct stat info;
if (stat(file_path, &info) == -1 || errno == ENOENT)
return -1;
if (stat(file_path, &info) != -1)
{
char buf[LINELEN];
snprintf(buf,LINELEN,"File Size: %d",info.st_size);
'printf'についての悪いことは、私には本当に悲しいことですが、まさにフォーマット文字列のこの問題です。いくつかの設定に応じて 'uint32_t'または' uint64_t'に型をtypedefするコードを想像してみてください。これらの変数を単に出力することはできません。しかし、問題なく最も確実に動作するソリューションは、引数を想定できる最大サイズにキャストすることです。たとえば、 'printf("%lu "、(unsigned int)info.st_size);'はサイズに関係なく正しく印刷されます。引数がキャストより大きい場合のみ問題です。あなたはデータを失いますが、それでもUBは避けてください。 – Shahbaz