Работа с файлами: запись, добавление, чтение (найти ошибку в коде) - 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;
        }

Объяснение кода листинга программы

  1. Объявлена функция operation(int arg), которая принимает целочисленный аргумент arg.
  2. В функции main() объявлена переменная flag типа int, которая используется для ввода пользователем числа.
  3. В функции main() выводится приглашение для ввода числа.
  4. В функции main() вызывается функция operation(flag), передавая ей значение переменной flag.
  5. В функции operation(int arg) проверяется значение аргумента arg.
  6. Если arg равно 49, то открывается файл myfile.txt в режиме записи (wt), пользователь вводит строку, которая записывается в файл, файл закрывается.
  7. Если arg равно 50, то открывается файл myfile.txt в режиме добавления (at), пользователь вводит строку, которая записывается в файл, файл закрывается.
  8. Если arg равно 51, то открывается файл myfile.txt в режиме чтения (r), пользователь вводит число 50, которое используется как размер массива, пользователь вводит строки, которые читаются из файла и выводятся на экран, файл закрывается.
  9. В функции main() пользователю предлагается ввести число 1, 2 или 3.
  10. В функции main() вызывается функция operation(flag).
  11. В функции main() возвращается 0, что означает успешное завершение работы программы.
  12. В функции operation(int arg) используются условные операторы if-else if-else, чтобы проверить значение аргумента arg.
  13. В функции main() используется функция getch(), чтобы получить введенное пользователем число.
  14. В функции main() используется функция scanf(), чтобы получить введенное пользователем число.
  15. В функции main() используется функция printf(), чтобы вывести приглашение для ввода числа.
  16. В функции main() используется функция gets(), чтобы получить введенную пользователем строку.
  17. В функции operation(int arg) используется функция fopen() для открытия файла myfile.txt.
  18. В функции operation(int arg) используется функция fputs() для записи строки в файл.
  19. В функции operation(int arg) используется функция fclose() для закрытия файла.
  20. В функции operation(int arg) используется функция fgets(), чтобы прочитать строку из файла.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5