Выдает ошибку для fscanf - C (СИ)
Формулировка задачи:
Ругается на строчку fscanf(fin, "%lf", &n); В чем может быть проблема?
#include <stdio.h>
#include <math.h>
int main()
{
double n, i;
FILE *fin, *fout;
fin=fopen("input.txt","r");
fout=fopen("output.txt","w");
fscanf(fin, "%lf", &n);
i = 2;
while (i<=sqrt(n))
if((int)n % (int)i == 0) {
fprintf(fout, "%.0lf*",i);
n = n/i;
} else
i = i+1;
fprintf(fout, "%.0lf",n);
fclose(fin);
fclose(fout);
return 0;
}Решение задачи: «Выдает ошибку для fscanf»
textual
Листинг программы
if((int)n % (int)i == 0)
Объяснение кода листинга программы
В представленном коде выполняется проверка условия, при котором целочисленная переменная n делится нацело на целочисленную переменную i. При этом выполняется приведение типов n и i к целочисленным значениям перед выполнением операции деления.
Вот список элементов кода с их номерами:
- Проверка условия:
(int)n % (int)i == 0 - Приведение типов
nиiк целочисленным значениям:(int)nи(int)i - Выполнение операции деления:
(int)n % (int)i - Сравнение результата с нулем:
%(int)i == 0 - Выполнение операции сравнения:
%(int)i == 0 - Значение переменной
nделится нацело на значение переменнойiЕсли условие(int)n % (int)i == 0истинно, то это означает, что целочисленное значение переменнойnделится нацело на целочисленное значение переменнойi. Если условие ложно, тоnне делится нацело наi.