Операция fwrite заполняет файл символами - C (СИ)
Формулировка задачи:
Здравствуйте! При помощи fwrite пытаюсь заполнить текстовый файл Dictionary, но он заполняется различными символами, каждый раз новыми. Мне ума не хватает понять в чем дело, может быть вы сможете найти ошибку?
Весь код:
Основная проблема:
Заранее искренне благодарю!
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <string.h>
#include <cstdlib>
#include <locale>
#include <ctype.h>
int main()
{
char sign,filename[80],word[80];
char **dictionary=new char*[50];
int *count=new int[50];
int *mas=new int[50];
for (int i=0;i<50;i++)
{
dictionary[i]=new char[50];
count[i]=0;
mas[i]=i;
}
setlocale(LC_ALL,"rus");
int flag;
do
{
int i=0,cycle=0;
flag=1;
FILE *f;
printf ("Введите имя файла: ");
fflush (stdin);
gets(filename);
f=fopen(filename,"rt");
if (f)
{
while(!feof(f))
{
fscanf(f,"%s",word);
for (int k=0;k<=cycle;k++)
if (strcmp(dictionary[k],word)==0)
{
count[k]++;
break;
}
else
if (k==cycle)
{
strcpy(dictionary[k],word);
cycle++;
count[k]++;
break;
}
memset(word,0,sizeof(word));
}
fclose(f);
for(int i=0; i<cycle-1; i++)
for(int j=i+1; j<cycle; j++)
if(count[j]>count[i])
{
int k;
k=count[i];
count[i]=count[j];
count[j]=k;
k=mas[i];
mas[i]=mas[j];
mas[j]=k;
}
for (int i=0; i<10; i++)
{
printf("%s - ",dictionary[mas[i]]);
printf("%d\n",count[i]);
}
for (int i=0; i<9; i++)
for (int j=i+1; j<10; j++)
if (strcmp(dictionary[j],dictionary[i])<0)
{
int k;
k=mas[i];
mas[i]=mas[j];
mas[j]=k;
}
FILE *f;
f=fopen("Dictionary.txt","wt");
for (int i=0; i<10; i++) fwrite(&dictionary[mas[i]], sizeof(dictionary[mas[i]]), 1, f);
fclose(f);
}
else
{
printf("\nТакого файла не существует! \n");
printf("\Нажмите любую клавишу");
fflush (stdin);
getch();
system ("cls");
flag=0;
}
}
while (!flag);
for (int i=0;i<50;i++) delete [] dictionary[i];
delete [] dictionary;
delete [] count;
getch();
} FILE *f;
f=fopen("Dictionary.txt","wt");
for (int i=0; i<10; i++) fwrite(&dictionary[mas[i]], sizeof(dictionary[mas[i]]), 1, f);
fclose(f);Решение задачи: «Операция fwrite заполняет файл символами»
textual
Листинг программы
struct element
{
int atnumber, numberper, numbergroup, electrons;
char nameelem[10], chimicalname[3];
float atmassa;
};
Объяснение кода листинга программы
- Объявлена структура
elementс полями:atnumber,numberper,numbergroup,electrons,nameelem,chimicalname,atmassa. - Далее идет заполнение структуры
elementданными. - После этого происходит запись данных из структуры в файл с помощью функции
fwrite.