Stránka 1 z 1
C - kopirovani struktur do polí
Napsal: 23 bře 2014 13:09
od gore227
Ahoj,
neumím přijít na toto zadání:
"Zkontrolujte, zda názvy všech skupin i alb začínají velkým písmenem. Pokud ne, opravte je"
Byl bych rád, kdyby mě někdo navedl, co je špatně. Díky.
Kód: Vybrat vše
.
.
.
.
strcpy(a[0][0],prvni.kapela);
strcpy(a[1][0],druhy.kapela);
strcpy(a[2][0],treti.kapela);
strcpy(b[0][0],prvni.nazev);
strcpy(b[1][0],druhy.nazev);
strcpy(b[2][0],treti.nazev);
for(i=0; i < 3; i++)
{
if (a[i][0]>='A' && a[i][0]<='Z') && (b[i][0] >= 'A' && b[i][0] <= 'Z')
continue;
else
{
a[i][0] =+'32';
b[i][0] =+'32';
}
}
for(i=0; i < 3; i++)
{
puts(a[i]);
puts(b[i]);
}
Re: C - kopirovani struktur do polí
Napsal: 23 bře 2014 13:18
od faraon
Nejdřív máš a[0][0], a na konci vypisuješ a[0], není to trochu divné?
Ukaž i deklaraci těch polí, ať je to jasnější.
Re: C - kopirovani struktur do polí
Napsal: 23 bře 2014 13:23
od gore227
Kód: Vybrat vše
typedef struct
{
char kapela[20], nazev[50];
int pocet;
}
SKUPINA;
int main()
{
SKUPINA prvni,druhy,treti;
int i,j;
char skupina[20], a[3][20], b[3][20];
Ten vypis byl jen tak, hází mi to errory už v tom jak se to kopiruje přes funkci strcpy.
Re: C - kopirovani struktur do polí
Napsal: 23 bře 2014 14:08
od faraon
Takže takhle:
- Pole a[3][20] znamená tři řádky po dvaceti znacích, a nemůžeš kopírovat řetězec do jednoho bajtu. Doslova to jsou tři ukazatele na pole znaků, ale to je technický detail
Kód: Vybrat vše
strcpy(a[0],prvni.kapela);
strcpy(a[1],druhy.kapela);
strcpy(a[2],treti.kapela);
strcpy(b[0],prvni.nazev);
strcpy(b[1],druhy.nazev);
strcpy(b[2],treti.nazev);
- Podmínka musí být v jedné závorce, když máš víc podmínek, musí být všechny uvnitř jedné závorky, takže ne if () && () ale if (() && ()):
Kód: Vybrat vše
if ((a[i][0]>='A' && a[i][0]<='Z') && (b[i][0] >= 'A' && b[i][0] <= 'Z'))
- V apostrofech se uvádí znak, bez apostrofů jeho kód. Ty aspostrofy způsobí že ti překladač dosadí kód toho znaku automaticky, podle použitého kódování. Sice není přípiš pravděpodobné že se s tím setkáš (pokud nebudeš programovat mainframy IBM), ale kromě ASCII existuje i EBCDIC, kde jsou písmena rozmístěná úplně jinak. Takže je vždycky lepší psát znak v apostrofech místo jeho číselného kódu.
Máš tedy na vybranou:
- A bacha, operátory =+ a =- se používaly v klasickém K&R v sedmdesátých letech, dnes (to jest minimálně od roku 1988) jsou opačně, protože způsobovaly nejednoznačnost při překladu. Takže vždy += a -=! Nebo to radši napiš celé po pascalsku, ono se to ve štábní kultuře větších projektů vyžaduje, tyhle zkratky zhoršují přehlednost a udržovatelnost kódu. Ne že bych je s oblibou nepoužíval také
