پیشنهاد میکنم برای سوالات برنامه نویسی کد به همراه خروجی کاملی از برنامه را قرار دهید.
در اینجا لازمه که نحوه فراخوانی برنامه برای اجرا، ورودیها و خروجی آن کاملا مشخص باشد.
سوال خوب بپرسید (https://wiki.ubuntu.ir/wiki/Smart_Questions) تا پاسخ خوب بگیرید.
اما تا اینجای کار میتوانید تغییرات زیر را اعمال کنید.
مقدار بازگشتی از fopen را بررسی کنید که NULL نباشد. مقدار NULL نشاندهنده عدم موفقیت باز کردن فایل است و در اینصورت گامهای بعدی نامعتبر است.
FILE* fp = fopen(file_name, "r");
if (fp){
printf("Error in opening file\n");
return;
}
مقدار بازگشتی fseek هم در صورت موفقیت باید 0 باشد. همچنین برای ftel هم بررسی کنید.
قسمتی از man fseek
RETURN VALUE
The rewind() function returns no value. Upon successful completion, fgetpos(), fseek(),
fsetpos() return 0, and ftell() returns the current offset. Otherwise, -1 is returned and
errno is set to indicate the error.
برای چاپ بیشتر اطلاعات در مورد خطای رخ داده میتوانید از هدر errno.h استفاده کنید.
https://www.geeksforgeeks.org/error-handling-c-programs/
پاسخهای دیگر را نیز بررسی کنید.
https://stackoverflow.com/questions/238603/how-can-i-get-a-files-size-in-c
پیشنهاد میکنم برای سوالات برنامه نویسی کد به همراه خروجی کاملی از برنامه را قرار دهید.
در اینجا لازمه که نحوه فراخوانی برنامه برای اجرا، ورودیها و خروجی آن کاملا مشخص باشد.
سوال خوب بپرسید (https://wiki.ubuntu.ir/wiki/Smart_Questions) تا پاسخ خوب بگیرید.
اما تا اینجای کار میتوانید تغییرات زیر را اعمال کنید.
مقدار بازگشتی از fopen را بررسی کنید که NULL نباشد. مقدار NULL نشاندهنده عدم موفقیت باز کردن فایل است و در اینصورت گامهای بعدی نامعتبر است.
FILE* fp = fopen(file_name, "r");
if (fp){
printf("Error in opening file\n");
return;
}
مقدار بازگشتی fseek هم در صورت موفقیت باید 0 باشد. همچنین برای ftel هم بررسی کنید.
قسمتی از man fseek
RETURN VALUE
The rewind() function returns no value. Upon successful completion, fgetpos(), fseek(),
fsetpos() return 0, and ftell() returns the current offset. Otherwise, -1 is returned and
errno is set to indicate the error.
برای چاپ بیشتر اطلاعات در مورد خطای رخ داده میتوانید از هدر errno.h استفاده کنید.
https://www.geeksforgeeks.org/error-handling-c-programs/
پاسخهای دیگر را نیز بررسی کنید.
https://stackoverflow.com/questions/238603/how-can-i-get-a-files-size-in-c
متاسفانه به دلیل بزرگ بودن سورس کد نمی تونم کدم رو این جا بذارم ولی با دیباگر برسی کردم قبلا یه تابع نوشته بودم که اگه فایل وجود نداشت بگه مسیر فایل اشتباهه و دوباره فایلو بخواد اگه مسیر اشتباهی بدم برنامه درست کار می کنه و دوباره ورودی می خواد اما اگه فایل وجود داشته باشه برنامه میره تا تابع یا روشی که سایز فایل رو می شه پیدا کرد اجرا می کنه اون موقع موقع خوندن فایل ارور می ده مطمعنم که مشکل از لینوکسه چون توی هر سیستم عاملی تست کردم درست کار می کرد