Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Ahoj , vie mi niekto poradit s tymto?
Mam pole char NaCiAge[][] v ktorom je ulozene meno ,mesto a vek(aj ten je zatial ako char) a potrebujem to dostat do structu Man.
struct man {
char name[200];
char city[200];
char age[5];
};
skusam toto:
struct man peter ={NaCiAge[0],NaCiAge[1],NaCiAge[2]};
(za predpokladu ze napr NaCiAge[0] je cele meno lebo znaky neupresnujem
ale vyhadzuje error
error: invalid type argument of 'unary *' (have 'struct person')
pritom takto to funguje
struct man peter = {"peter","dubnica",52);
Dopredu vdaka za radu :)
Offline
Takže pole znaku (řetězec) je v céčku vlastně užito jako ukazatel na 1. znak
A když máš v charu uložené číslo, tak abys to mohl uložit do struktury jako integer, tak to musíš nejprve přetypovat. Takže...
struct man Jan = {"{*NaCiAge[0]}", "", {(int)NaCiAge[2]}};
tohle ale úplně nefunguje, protože by se do "name" zkopíroval jen první znak jména. Takže mě jako první napadlo využít knihovny <string.h> a celý řetězec tam zkopírovat pomocí funkce "strcpy(Jan.city, NaCiAge[0]);"
Čistě teoreticky, nevím jaký používáš překladač a jaký standard c99 ? Ale když jsem zkoušel tvůj kód rozjet tak mi to psalo jinou chybu - se závorkami -a bylo potřeba doplnit složené závorky pro jednotlivé položky struktury.
V celku bych to tedy zkopíroval takto:
struct man Jan = {"", "", ""};
strcpy(Jan.name, NaCiAge[0]);
strcpy(Jan.city, NaCiAge[1]);
strcpy(Jan.age, NaCiAge[2]);
// pro kontrolu si to nechame vypsat v konzoli
printf("%s:%s:%s\n", Jan.name, Jan.city, Jan.age);
//EDIT: upraven zdrojový kód
Offline
Aha. já si teď všiml, že i v té struktuře používáš pro "age" char[]. Já nevím proč jsem uvažoval že tam je int... v tom případě, že se vším pracuješ jako s řetězcem tak stejně zkopíruj i ten věk. V případě, že bys chtěl pracovat s věkem jako integerem - což mi přijde logičtější, pak by platilo to "(int)NaCiAge[2]"
Upravím ten předchozí příspěvek to funkční varianty...
Offline