Написал код, выдает ошибку: "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;
}