Записать в файл массив 10 строк, содержащих даты, увеличивающиеся на 1 день - C (СИ)
Формулировка задачи:
В общем нужно :
1. Создать пустой текстовый файл, записать в него массив 10 строк, содержащих даты, увеличивающиеся на 1 день, начиная с сегодняшнего числа.
Помогите пожалуйста.
выдаёт ошибку
вот мой код
#include <stdio.h>
int main()
{
int a[11] = { 1, 2,3, 4, 5, 6, 7,8,9,10};
int i;
int size;
size = sizeof(a) / sizeof(int);
FILE*output = fopen("C:\Users\Zeus\Desktop\file", "w");
for (i = 0; i < size; i++)
fprintf(output, "%d", a[i]);
fclose(output);
}
В Dev C++ компилит без проблем.
Визуалка не хочет.
В чём проблема?
Решение задачи: «Записать в файл массив 10 строк, содержащих даты, увеличивающиеся на 1 день»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{ // 1 2 3 4 5 6 7 8 9 10 11 12
int month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int i = 1, m, d, y, n, d1, m1, y1, leap = 0;
int size;
unsigned int data=0;
FILE *output = fopen("1.txt", "w");
printf("Day: ");
scanf("%d", &d);
printf("Month: ");
scanf("%d", &m);
printf("Year: ");
scanf("%d", &y);
printf("N: ");
scanf("%d", &n);
leap = (y % 4 == 0 && y % 100 != 0 || y % 400 == 0);
while (i <= n)
{
if (d + 1 > month[m]+(leap && m==2))
{
if (m + 1 > 12)
{
m = 1;
y = y + 1;
leap = ( y % 4 == 0 && y % 100 != 0 || y % 400 == 0);
}
else
{
m = m + 1;
y = y;
}
d = 1;
}
else
{
d = d + 1;
}
printf("%02d.%02d.%4d\n", d, m, y);
fprintf(output, "%02d.%02d.%4d\n", d, m, y);
++i;
}
fclose(output);
return 0;
}
Объяснение кода листинга программы
- Объявлены массив
monthи переменныеi,m,d,y,n,d1,m1,y1,leapсо значениями, соответственно:- month: {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
- i: 1
- m: 0
- d: 1
- y: 0
- n: 0
- d1: 0
- m1: 0
- y1: 0
- leap: 0
- Открыт файл
1.txtдля записи (режимw). - Пользователю предлагается ввести день, месяц и год.
- Вычисляется значение переменной
leapв зависимости от года:- Если год делится на 4 и не делится на 100 (или делится на 400), то это високосный год, и значение
leapбудет 1. - В противном случае, значение
leapбудет 0.
- Если год делится на 4 и не делится на 100 (или делится на 400), то это високосный год, и значение
- Запускается цикл, который будет выполняться столько раз, сколько указано пользователем (n).
- Внутри цикла проверяется, не превышает ли текущая дата (d + 1) максимальный количество дней в месяце (month[m]) с учетом того, что если месяц равен 2 и год високосный, то добавляется один день.
- Если текущая дата превышает максимальное количество дней в месяце, то выполняется блок кода, который переходит к следующему месяцу (m + 1) и году (y + 1), и снова проверяет количество дней.
- Если текущая дата не превышает максимальное количество дней в месяце, то просто увеличивается значение переменной
dна 1. - В каждой итерации цикла выводится текущая дата в формате
d.m.yyyyна экран и записывается в файл1.txt. - Увеличивается значение переменной
iна 1. - Цикл завершается, когда значение переменной
iстановится равным n. - Файл
1.txtзакрывается. - Программа завершается с кодом 0, что означает успешное выполнение.