У меня проблема с моим проектом. Я не знаю, как добавить параметр, который будет сохранен для файла результата с консоли. Я думаю, что я использую fprintf
, но ничего не работает. Пожалуйста, помогите; DКак сохранить файл?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct symbole
{
int symbol;
int czestosc;
};
struct symbole nowy[256];
void odczytIwyznaczenie(void);
void wyswietl(struct symbole nowy[]);
void sortuj(struct symbole nowy[]);
int main()
{
odczytIwyznaczenie();
sortuj(nowy);
wyswietl(nowy);
getchar();
return 0;
}
void odczytIwyznaczenie (void)
{
FILE *plik;
char n;
int i;
for (i=0; i<256; i++)
{
nowy[i].czestosc=0;
nowy[i].symbol=i;
}
plik = fopen("plik.txt","r");
if (plik == NULL)
{
printf("Blad odczytu!");
getchar();
exit(1);
}
while (n != EOF)
{
n = fgetc(plik);
for(i=0; i<256; i++)
{
if (nowy[i].symbol == n)
{
nowy[i].czestosc++;
break;
}
}
}
fclose (plik);
}
void sortuj(struct symbole nowy[])
{
int i, j, temp, temp1;
for (i = (256); i > 0; i--)
{
for (j = 1; j <= i; j++)
{
if (nowy[j-1].czestosc < nowy[j].czestosc)
{
temp = nowy[j-1].czestosc;
temp1=nowy[j-1].symbol;
nowy[j-1].czestosc = nowy[j].czestosc;
nowy[j-1].symbol=nowy[j].symbol;
nowy[j].czestosc = temp;
nowy[j].symbol=temp1;
}
}
}
}
void wyswietl(struct symbole nowy[])
{
int i;
for (i=0; i<256; i++)
{
if (nowy[i].czestosc!= 0)
printf ("%5d| %5c| %5d\n", nowy[i].symbol, nowy[i].symbol, nowy[i].czestosc);
}
}
У вас есть серьезная ошибка: 'n' не инициализируется перед' while (n! = EOF) 'suggest' while ((n = fgetc (plik))! = EOF)'. –
И, пожалуйста, используйте английский для обозначения ваших идентификаторов, я не являюсь носителем английского языка, но лучше, когда можно догадаться, что делает функция или что идентификатор определяет из имени функции или идентификатора, а так как английский является универсальным языком программирования , хорошо английский он должен быть. –