Как правильно fscanf текстовый файл в C - PullRequest
0 голосов
/ 10 января 2020

Например: # 1 Tutti / Leeloo / 853811356; N

А это мой код:

typedef struct{
    int redni;
    char prezime[50+1];
    char ime[50+1];
    char osobna[50+1];
    char glasao[10];

} Biraliste;


int nBiraci=0;

while(fscanf(biralisteTxt,  "%d %[^/]/%[^/]/%[^;];%[^\n]",
             biraci[n].redni, biraci[n].prezime, biraci[n].ime, biraci[n].osobna, biraci[n].glasao  ) == 5)
{
    nBiraci++;

}

for(i=0;i<nBiraci;i++)
{

        fprintf(statistikaTxt, "%d %s %s %s %s", 
&biraci[i].redni, biraci[i].prezime, biraci[i].ime, biraci[i].osobna, biraci[i].glasao );


}

Может ли кто-нибудь помочь mi с правильными fscanf и fprintf, и нормально ли будет fscanf redni с% d или это должен быть% s.

Ответы [ 2 ]

2 голосов
/ 10 января 2020

"#% d% [^ /] /% [^ /] /% [^;];% [^ \ n]" - это правильный ответ, спасибо

0 голосов
/ 10 января 2020

Следующий код исправляет две проблемы.

  • scanf должен получить адрес переменной для заполнения, это &biraci...
  • индекс должен быть nBiraci, а не n, то есть &biraci[nBiraci]...
  • должен быть # перед% d
int nBiraci=0;
while(fscanf(biralisteTxt,  " #%d %[^/]/%[^/]/%[^;];%[^\n]",
             &biraci[nBiraci].redni, (char*)&biraci[nBiraci].prezime,
             (char*)&biraci[nBiraci].ime, (char*)&biraci[nBiraci].osobna,
             (char*)&biraci[nBiraci].glasao) == 5)
{
    nBiraci++;
}
...