В файл записывается не то, что нужно - 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);
Объяснение кода листинга программы
- В начале кода объявляется файл
mтипа char с размеромl. - Далее, с помощью функции
fwrite, в файлmзаписывается содержимое переменнойmс шагом размераsizeof(char). - Затем, с помощью функции
rewind, происходит возврат в начало файлаfp. - И наконец, с помощью функции
fread, из файлаmсчитывается содержимое переменнойmс шагом размераsizeof(char).