Работа с файлами: запись, добавление, чтение (найти ошибку в коде) - C (СИ)
Формулировка задачи:
Надо создать программу для работы с файлами. Вводим значения:
1: запись
2:добавление
3:чтение
Только вот сразу после ввода значения окно программы закрывается. Вот код:
//Г°Г*áîòГ* Г± ГґГ*éëГ*ìè
#include <stdio.h>
void filerew()
{ FILE *myfile;
myfile = fopen("myfile.txt","wt");
char *st;
system("cls");
printf("enter string: \n");
gets(st);
fputs(st,myfile);
fclose(myfile);
}
void fileadd()
{ FILE *myfile;
myfile = fopen("myfile.txt","at");
char *st;
system("cls");
printf("enter string: \n");
gets(st);
fputs(st,myfile);
fclose(myfile);
}
void fileread()
{ int n=50;
FILE *myfile;
myfile = fopen("myfile.txt","r");
char arr[n];
while(fgets(arr,n,myfile) != NULL)
printf("%s",arr);
printf("\n");
fclose(myfile);
}
int main()
{
int flag;
printf("enter 1 for rewrite, 2 for complete,3 for read other to exit: ");
scanf("&d",flag);
switch(flag)
{
case 1:filerew();
return 0;
break;
case 2:fileadd();
return 0;
break;
case 3:fileread();
return 0;
default:return 0;
break;
}
}Решение задачи: «Работа с файлами: запись, добавление, чтение (найти ошибку в коде)»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
void operation(int arg )
{
if (arg = 49)
{
FILE *myfile;
myfile = fopen("myfile.txt","wt");
char st[120];
// system("cls");
printf(" \n enter string: \n");
gets(st);
fputs(st,myfile);
fclose(myfile);
} else
if (arg = 50)
{
FILE *myfile;
myfile = fopen("myfile.txt","at");
char st[120];
//system("cls");
printf("enter string: \n");
gets(st);
fputs(st,myfile);
fclose(myfile);
} else
if (arg = 51)
{
FILE *myfile;
myfile = fopen("myfile.txt","r");
int n=50;
char arr[n];
while(fgets(arr,n,myfile) != NULL)
printf("%s",arr);
printf("\n");
getch();
fclose(myfile);
}
}
int main()
{
int flag;
printf("enter 1 for rewrite, 2 for complete,3 for read other to exit: ");
//scanf("&d",&flag);
flag = getch();
operation(flag);
return 0;
}
Объяснение кода листинга программы
- Объявлена функция
operation(int arg), которая принимает целочисленный аргументarg. - В функции
main()объявлена переменнаяflagтипаint, которая используется для ввода пользователем числа. - В функции
main()выводится приглашение для ввода числа. - В функции
main()вызывается функцияoperation(flag), передавая ей значение переменнойflag. - В функции
operation(int arg)проверяется значение аргументаarg. - Если
argравно 49, то открывается файлmyfile.txtв режиме записи (wt), пользователь вводит строку, которая записывается в файл, файл закрывается. - Если
argравно 50, то открывается файлmyfile.txtв режиме добавления (at), пользователь вводит строку, которая записывается в файл, файл закрывается. - Если
argравно 51, то открывается файлmyfile.txtв режиме чтения (r), пользователь вводит число 50, которое используется как размер массива, пользователь вводит строки, которые читаются из файла и выводятся на экран, файл закрывается. - В функции
main()пользователю предлагается ввести число 1, 2 или 3. - В функции
main()вызывается функцияoperation(flag). - В функции
main()возвращается 0, что означает успешное завершение работы программы. - В функции
operation(int arg)используются условные операторыif-else if-else, чтобы проверить значение аргументаarg. - В функции
main()используется функцияgetch(), чтобы получить введенное пользователем число. - В функции
main()используется функцияscanf(), чтобы получить введенное пользователем число. - В функции
main()используется функцияprintf(), чтобы вывести приглашение для ввода числа. - В функции
main()используется функцияgets(), чтобы получить введенную пользователем строку. - В функции
operation(int arg)используется функцияfopen()для открытия файлаmyfile.txt. - В функции
operation(int arg)используется функцияfputs()для записи строки в файл. - В функции
operation(int arg)используется функцияfclose()для закрытия файла. - В функции
operation(int arg)используется функцияfgets(), чтобы прочитать строку из файла.