Вы не хотите использовать stat () для этого, вам нужен access ().
if (access(filename, R_OK)) {
// code to handle missing or unreadable file
} else {
// code to handle readable file
}
Ваш код будет работать, если вы измените тест на возвращаемое значение stat () в качестве очков Джонатана Леффлеравне, но Unix предоставляет системный вызов, чтобы делать именно то, что вы хотите, так что вы могли бы также использовать его.
Но, как отмечали другие комментаторы, если вы собираетесь читать этот файл, вам будет лучшеслужит только для того, чтобы открыть его для чтения и позволить сообщению об ошибке сообщать о проблеме.