Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Lolu9
Piegowaty Guziec
Posty: 6 Rejestracja: 09 mar 2010, 15:47
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86
Post
autor: Lolu9 » 04 cze 2010, 00:26
Witam.
Jestem początkującym programistą i prosze pomoc w takim problemie. Jak wywołać strukturę w funkcji? Szukałem w google i nic nie moge znaleźć. Mam poczatek programu i chce zadeklerować funkcję, jednak kompilator wywala mi błąd w linijce w której jest deklaracja funkcji:
Kod: Zaznacz cały
bazadanychstruktury.c:14: error: expected ?)? before ?pole?
KOD PROGRAMU
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
struct rekord
{
char marka[15];
char model[15];
int rocznik;
int cena;
int przebieg;
char wlasciciel[20];
};
short int dodaj_rekord(rekord pole);
cb1986ster
Sędziwy Jeż
Posty: 66 Rejestracja: 10 cze 2008, 20:59
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: Inne
Architektura: x86
Post
autor: cb1986ster » 04 cze 2010, 02:14
Zmień:
na:
Kod: Zaznacz cały
short int dodaj_rekord(struct rekord pole);
Każdy młody masochista
instaluje \/\/indows \/ista!
mario_7
Administrator
Posty: 8655 Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64
Post
autor: mario_7 » 04 cze 2010, 02:21
Ewentualnie zadeklaruj typ danych (typedef) na bazie tej struktury, aby nie dodawać później wszędzie słówka struct.
Lolu9
Piegowaty Guziec
Posty: 6 Rejestracja: 09 mar 2010, 15:47
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86
Post
autor: Lolu9 » 05 cze 2010, 00:29
Dzięki serdeczne!
EDIT:
Zmagam sie z moim programem i mam kolejny problem. Dlaczego gdy podaje jakąś wartość typu int podczas proszenia o rok i potem chce zeby mi wyswietlił tą wartość, to program pokazuje cos w stylu -1634820193? Prosze o pomoc.
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
struct rekord
{
char marka[15][500];
char model[15][500];
int rocznik[15][500];
int cena[15][500];
int przebieg[15][500];
char wlasciciel[15][500];
};
short int dodaj_rekord(struct rekord *pole, int *n);
int main()
{
struct rekord pole;
int lwierszy=0;
printf(" \033[2J"); //czyszczenie ekranu
printf("\t\t\t\t>> MENU <<");
printf("\n\n1.Dodaj | 2.Edytuj | 3.Usun | 4.Sortuj | 5.Wyswietl | 6.Usun baze | 0.Wyjscie\n");
char a;
do
{
printf("\nCo chcesz zrobic: ");
scanf("%s",&a);
switch(a)
{
case '1':
dodaj_rekord(&pole,&lwierszy);
break;
case '0':
printf("\nKoncze program...\n");
break;
default:
printf("\nWybierz wlasciwy numer z MENU.\n");
break;
}
}
while (a!='0');
return 0;
}
short int dodaj_rekord(struct rekord *pole, int *n)
{
printf("\n\tDodaj pola w rekordzie: \n\n");
printf("przed %d\n",*n);
printf("Podaj marke: | ");
scanf("%s",(*pole).marka[*n]);
printf("Podaj model: | ");
scanf("%s",(*pole).model[*n]);
printf("Podaj rok produkcji: | ");
scanf("%d",(*pole).rocznik[*n]);
//sprawdzanie
printf("rok: %d\n",(*pole).rocznik[*n]);
printf("model: %s\n",(*pole).model[*n]);
(*n)++;
printf("po %d\n",*n);
return 0;
}
beluosus
Zakręcona Traszka
Posty: 695 Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:
Post
autor: beluosus » 05 cze 2010, 01:11
Podpowiedź kompilatora raczej czytelna:
Kod: Zaznacz cały
warning: format '%d' expects type 'int', but argument 2 has type 'int *'
Dajesz wskaźnik do inta, a powinna być wartość inta:
Ponadto w C nie ma komentarzy rozpoczynających się od //, są tylko między /* i */. Zgodnie z ISO C90 deklaracje zmiennych umieszcza się na początku bloku, przed jakimkolwiek kodem.
Lolu9
Piegowaty Guziec
Posty: 6 Rejestracja: 09 mar 2010, 15:47
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86
Post
autor: Lolu9 » 05 cze 2010, 01:47
Myślałem nad tymi wskaźnikami, ale nie wpadłem na pomysł, że to trzeba dać * przed całą nazwą zmiennej strukturalnej. Dziękuje.
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 9 gości