Przekazywaniem wskaznika komórki tablicy do funkcji

0

Witam mam kod:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
using namespace std;


struct para
{
    char napis[100];
    char liczba[20];
};

int wiersz(FILE* f, struct para *p)
{
	fscanf(f, "%s %s", p.napis, p.liczba);
	return 0;
}


/*int wiersz(FILE* f, struct para *p)
{
    int i, a = 0;
    for (i = 0; i < 5; i++)
    {
        fscanf(f, "%s %s %s", p[i].napis, p[i].napis, p[i].liczba);
    }
    return 0;
};*/

int main()
{
	para q[5];
	char a[40];
	char b[40];
	cout<<"Podaj nazwe pliku z danymi pamietaj o rozszerzeniu pliku"<<endl;
	cin>>a;
	FILE *f=fopen(&a[0],"r");
		if (f == NULL)
		{
			cout<<"Nie udalo sie otworzyc pliku notatki.txt"<<endl;
			return 1;
		}
		else
		{
			cout<<"Plik otwarty pomyslnie!"<<endl;
		}


int zwracana;
zwracana = wiersz(f,q);

/*for(int i=0;i<5;i++)
{
fscanf(f, "%s %s %s", p[i].napis, p[i].napis, p[i].liczba);
cout<<i<<endl;
}

;
*/


return 0;
} 

otrzymuje błąd:
Error 2 error C2228: left of '.liczba' must have class/struct/union

nie do konca wiem o co chodzi. Jakies rady?

5

jak masz wskaznik to powinienes uzyc operatora

-> 

a gdy masz obiekt (a nie wskaznik na obiekt)
to wtedy uzywasz operatora

.

czyli zamien . na -> w funkcji wiersz przy zmiennej p

3

Jedno z:
1.

fscanf(f,"%s %s",(*p).napis,(*p).liczba);
fscanf(f,"%s %s",p[0].napis,p[0].liczba);
fscanf(f,"%s %s",p->napis,p->liczba);

1 użytkowników online, w tym zalogowanych: 0, gości: 1