Написал код, выдает ошибку: "fp" может быть равен "0": это не соответствует спецификации функции "fprintf_s"

#include<stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS

int build_triangle(int a, int b, int c)
{
    int l = 0;
    if (!((a < b + c) && (b < a + c) && (c < a + b))) //&& - или
    {
        if (a >= (b + c))
            l = a - (b + c - 1);
        else if (b >= (a + c))
            l = b - (a + c - 1);
        else
            l = c - (a + b - 1);
    }
    return l;
}

int main()
{
    int a, b, c;
    FILE* fp = NULL;
    fopen_s(&fp, "input.txt", "r");
    fscanf_s(fp, "%d%d%d", &a, &b, &c);
    fclose(fp);

    int l = build_triangle(a, b, c);

    fopen_s(&fp, "output.txt", "w");
    fprintf_s(fp, "%d", l);
    fclose(fp);
    system("pause");
    return 0;
}

Ответы (1 шт):

Автор решения: Sergey

Вы не проверяете, открылся ли файл на самом деле, или произошла ошибка. А это недопустимо. Вот компилятор и деликатно намекает Вам, что Вы - не правы. Сделайте так:

fp = fopen("input.txt", "r");
if (!fp) {
    fprintf(stderr, "opening %s: %s\n", "input.txt", strerror(errno));
    return 1;
}
→ Ссылка