Считать 3 числа из файла, и записать в результирующий - C (СИ)
Формулировка задачи:
Имеются некоторые проблемы с чтением с/записью в файл.
Допустим, есть программа, считающая НСД 3 чисел. Надо считать 3 числа из файла, и записать в файл
НСД. Файлов два варианта - бинарный и текстовый.
Вот код без файлового ввода-вывода.
Как я понял, запись примерно так смотрится например:
Но не работает.
#include <stdio.h>
int nsd(int r,int w) {
do {
if (r>w) r=r%w;
else w=w%r;
}
while (r!=0&&w!=0);
return r+w;
}
int main()
{
int a,b,c;
printf ("Input a,b,c: \n");
scanf ("%d%d%d", &a,&b,&c);
printf("%d ",nsd(c,nsd(a,b)));
return 0;
}FILE *out;
out=fopen("D://file.txt", "w");
if (out!=0) fprintf (out, "%d%d%d", a,b,c);
Вот это должно бы работать, но ....
FILE *ff;
FILE *out;
int a,b,c;
out=fopen("D://fileout.txt","r");
if (out!=NULL) fscanf(out,"%d%d%d",&a,&b,&c);
fclose(out);
nsd(c,nsd(a,b));
ff=fopen("D://filein.txt","w");
if (ff!=NULL) fprintf(ff, "%d ", nsd(c,nsd(a,b)));
fclose(ff);Решение задачи: «Считать 3 числа из файла, и записать в результирующий»
textual
Листинг программы
#include <stdio.h>
int nsd(int r, int w) {
do {
if (r > w)
r = r % w;
else
w = w % r;
} while (r != 0 && w != 0);
return r + w;
}
int main() {
int a=12, b=60, c=50;
//printf("Input a,b,c: \n");
//scanf("%d%d%d", &a, &b, &c);
//printf("%d ", nsd(c, nsd(a, b)));
FILE *ff;
FILE *out;
out = fopen("fileout.txt", "w");
if (out!=NULL) fprintf(out, "%d %d %d", a, b, c);
fclose(out);
out = fopen("fileout.txt", "r");
if (out != NULL)
fscanf(out, "%d%d%d", &a, &b, &c);
fclose(out);
nsd(c, nsd(a, b));
ff = fopen("filein.txt", "w");
if (ff != NULL)
fprintf(ff, "%d ", nsd(c, nsd(a, b)));
fclose(ff);
return 0;
}
Объяснение кода листинга программы
- Включаем стандартную библиотеку ввода-вывода
- Определяем функцию nsd, которая вычисляет наибольший общий делитель двух чисел
- В функции main создаем три переменные типа int: a=12, b=60, c=50
- Открываем файл для записи (fileout.txt) и записываем в него значения переменных a, b, c
- Открываем файл для чтения (fileout.txt) и считываем значения переменных a, b, c
- Вычисляем значение функции nsd с использованием переменных a, b, c
- Открываем файл для записи (filein.txt) и записываем в него значение функции nsd
- Закрываем все открытые файлы
- Возвращаем 0, чтобы указать, что программа успешно завершилась