В файл записывается не то, что нужно - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Проблема в том,что при явной инициализации массива - все идет гладко:

    int l;
    FILE *fp;
    char m[100];
     system("cls");
 
     if((fp=fopen("d:\\Dat.txt", "w+"))==NULL) {
    printf("Ошибка при открытии файла.\n");
    exit(1);
  }
    
     gets(m);
    l=strlen(m);
    fwrite(&m, sizeof(char), l, fp);
 
    rewind(fp);
 
    fread(&m, sizeof(char), l, fp);
    printf("%s\n",m);
    fclose(fp);

Но если под массив выделяешь динамическую память- в файл пишет такой бред!!!

    int l,n;
    FILE *fp;
    char *m;
     system("cls");
 
     if((fp=fopen("d:\\Dat.txt", "w+"))==NULL) {
    printf("Ошибка при открытии файла.\n");
    exit(1);
  }
    scanf("%d",&n);
    m=new char[n];
    scanf("%s",m);
    l=strlen(m);
    fwrite(&m, sizeof(char), l, fp);
    rewind(fp);
     fread(&m, sizeof(char), l, fp);
    printf("%s\n",m);
    fclose(fp);
    
    delete[]m;

В чем проблема, Умные товарищи, помогите пож!!!

Решение задачи: «В файл записывается не то, что нужно»

textual
Листинг программы
    fwrite(m, sizeof(char), l, fp);
    rewind(fp);
        fread(m, sizeof(char), l, fp);

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

  1. В начале кода объявляется файл m типа char с размером l.
  2. Далее, с помощью функции fwrite, в файл m записывается содержимое переменной m с шагом размера sizeof(char).
  3. Затем, с помощью функции rewind, происходит возврат в начало файла fp.
  4. И наконец, с помощью функции fread, из файла m считывается содержимое переменной m с шагом размера sizeof(char).

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


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

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

5   голосов , оценка 4.2 из 5
Похожие ответы