Diskuze: scanf-struktura
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Jako prvni problem bych videl ze nedefinujes ke ktere polozce pole list
pristupujes, za dalsi list[i] neni ukazatel takze operator -> tam nema co
delat a za treti scanf pokud vim zere ukazatele, tzn melo by to byt nejak takto?
&(list[i].jmeno). Taky pocitej s tim ze kdyz ti tam nekdo zada retezec delsi
jak 20 znaku tak ti to pujde do kytek, protoze ti to pretece, v lepsim pripade
ti to prepise dalsi prvky te struktury, v horsim to pretece nekam dal a padne ti
to jako ted.
Abych pravdu rekl, taky si nejsem jisty jak se to bude chovat v cecku sem
nenapsal ani carku uz tak 8 let
Jo a pak v tom poslednim printf ti chybi promenne ktere chces vypsat
Kecam blbosti, spis takto: list[i].jmeno, list[i].prijmeni,
&(list[i].vek), &(list[i].sex)
jmeno a prijmeni uz jsou ukazatele
Zdravím vás, a moc děkuju za postřehy. Udělal jsem to dle vašich
doporučení ale stejně mi to nejde.Nebo jako "jde". Nechápu jak je to možne.
Jestliže jsem toto napsal ve M. visualu nerozchodil jsem to neustále mi
vyskakuje error(při načítání prvního). Ale když jsem použil DEV C++ tak
se mi to přeložilo a funguje. Nechápu a nevím kde je chyba?
Zdroják fungujíci z DEV C++:
#include <stdio.h>
#include <string.h>
#define MAX 2
typedef struct osoba {
char jmeno[20];
char primeni[20];
int vek;
char sex;
}OSOBA;
OSOBA list[MAX];
int main()
{
int i;
printf("Zadej / Jmeno /Primeni / vek / pohlavi \n");
for (i = 0; i < MAX; i++) {
scanf("%s %s %d %c", list[i].jmeno, list[i].primeni, &list[i].vek, &list[i].sex);
}
printf("osoby jsou zadane\n");
printf("vypis\n");
//celkovy vypis
for (i = 0; i < MAX; i++) {
printf("Jmeno: %s,\tPrimeni: %s,\tVek: %d,\tPohlavy: %c\n",
list[i].jmeno, list[i].primeni, list[i].vek, list[i].sex);
}
}
Zobrazeno 5 zpráv z 5.