Сформировать массив в котором каждому элементу будет присвоено значение справа стоящего с ним - C (СИ)
Формулировка задачи:
Исправьте пожалуйста программу. Все компилируется хорошо, без ошибок но в файле ww ничего не появляется
В файле w задан массив из десяти элементов в новом файле ww сформировать массив в котором каждому элементу будет присвоено значение справа стоящего с ним. Последнему элементу присвоить значение первого.
#include <conio.h>
#include <stdio.h>
void main()
{
int a[10], i;
int b[10];
FILE * f1,* f2;
f1=fopen("w1.dat","r");
for (i=0; i<10; i++)
fscanf(f1,"%d",&a[i]);
fclose(f1);
f2=fopen("w2.dat","w");
fprintf(f2,"smena elementov\n");
for(i=1;i<9;i++)
{
b[i]=a[i+1];
}
b[10]=a[1];
fprintf(f2,"%d\n",b[i]);
}Решение задачи: «Сформировать массив в котором каждому элементу будет присвоено значение справа стоящего с ним»
textual
Листинг программы
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define ERR_OPEN_FILE 1
#define ERR_USE 2
int main(int argc, char *argv[])
{
int a[10], i;
int b[10];
FILE * f1,* f2;
if(argc != 2){
puts("usage: <name_prog> <name_input_file>");
exit(ERR_USE);
}
f1 = fopen(argv[1],"r");
if(!f1){
puts("error open input file.");
exit(ERR_OPEN_FILE);
};
for (i = 0; i < 10; i++)
fscanf(f1, "%d", &a[i]);
fclose(f1);
f2 = fopen("w2.dat","w");
if(!f2){
puts("error open input file.");
exit(ERR_OPEN_FILE);
};
fprintf(f2, "smena elementov\n");
b[9]=a[0];
for(i = 0; i < 9; i++){
b[i] = a[i+1];
fprintf(f2, "%d\n", b[i]);
}
fprintf(f2, "%d\n", b[9]);
fclose(f2);
return 0;
}
Объяснение кода листинга программы
В этом коде используется язык программирования C.
- #include
- библиотека для работы с консолью, в частности, с функцией getch(). - #include
- библиотека для работы с вводом/выводом, в частности, с функциями printf() и fprintf(). - #include
- библиотека для работы с памятью, в частности, с функцией malloc(). - #define ERR_OPEN_FILE 1 - определение ошибки при открытии файла.
- #define ERR_USE 2 - определение ошибки использования программы.
- *int main(int argc, char argv[])** - функция main(), то есть точка входа в программу.
- int a[10], i; - объявление массива a размером 10 и переменной i.
- int b[10]; - объявление массива b размером 10.
- FILE f1, f2; - объявление указателей на файлы f1 и f2.
- if(argc != 2){ - проверка, что аргументов на вход поступило ровно 2.
- puts(
usage: <name_prog> <name_input_file>); - вывод сообщения об ошибке. - exit(ERR_USE); - выход из программы с ошибкой.
- f1 = fopen(argv[1],
r); - попытка открытия файла, имя которого передано в качестве аргумента. - if(!f1){ - проверка, открылся ли файл.
- puts(
error open input file.); - вывод сообщения об ошибке. - exit(ERR_OPEN_FILE); - выход из программы с ошибкой.
- for (i = 0; i < 10; i++) - цикл по всем элементам массива a.
- fscanf(f1,
%d, &a[i]); - чтение числа из файла и запись его в массив a. - fclose(f1); - закрытие файла f1.
- f2 = fopen(
w2.dat,w); - попытка открытия файлаw2.datдля записи. - if(!f2){ - проверка, открылся ли файл.
- puts(
error open input file.); - вывод сообщения об ошибке. - exit(ERR_OPEN_FILE); - выход из программы с ошибкой.
- fprintf(f2,
smena elementov\n); - запись сообщения в файл. - b[9]=a[0]; - присваивание первому элементу массива b значение последнего элемента массива a.
- for(i = 0; i < 9; i++){ - цикл по всем элементам массива b, начиная со второго.
- b[i] = a[i+1]; - присвоение элементам массива b значений элементов массива a, начиная со второго.
- fprintf(f2,
%d\n, b[i]); - запись значения элемента массива b в файл. - fprintf(f2,
%d\n, b[9]); - запись значения первого элемента массива b в файл. - fclose(f2); - закрытие файла f2.
- return 0; - возврат значения 0, что означает успешный конец работы программы.