Matematické Fórum

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

#1 23. 11. 2011 18:25 — Editoval milwoukee (23. 11. 2011 18:27)

milwoukee
Příspěvky: 158
Reputace:   
 

Predavanie hodnoty char[] do Struct v C

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

 

#2 23. 11. 2011 19:03 — Editoval cStP (23. 11. 2011 19:53)

cStP
Příspěvky: 39
Reputace:   
Web
 

Re: Predavanie hodnoty char[] do Struct v C

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

 

#3 23. 11. 2011 19:40 — Editoval milwoukee (23. 11. 2011 19:40)

milwoukee
Příspěvky: 158
Reputace:   
 

Re: Predavanie hodnoty char[] do Struct v C

↑ cStP:
Dakujem pomohlo to v pripade mena a mesta , avsak ked dam vypisat age tak mi tam vypisuje bud znak alebo adresu ale nie cislo(int)

Offline

 

#4 23. 11. 2011 19:52

cStP
Příspěvky: 39
Reputace:   
Web
 

Re: Predavanie hodnoty char[] do Struct v C

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

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson