Операция 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;
    };

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

  1. Объявлена структура element с полями: atnumber, numberper, numbergroup, electrons, nameelem, chimicalname, atmassa.
  2. Далее идет заполнение структуры element данными.
  3. После этого происходит запись данных из структуры в файл с помощью функции fwrite.

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


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

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

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