C - kopirovani struktur do polí

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

gore227
nováček
Příspěvky: 26
Registrován: březen 14
Pohlaví: Muž
Stav:
Offline

C - kopirovani struktur do polí

Příspěvekod gore227 » 23 bře 2014 13:09

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]);
   }




Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C - kopirovani struktur do polí

Příspěvekod faraon » 23 bře 2014 13:18

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ší.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

gore227
nováček
Příspěvky: 26
Registrován: březen 14
Pohlaví: Muž
Stav:
Offline

Re: C - kopirovani struktur do polí

Příspěvekod gore227 » 23 bře 2014 13:23

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.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C - kopirovani struktur do polí

Příspěvekod faraon » 23 bře 2014 14:08

Takže takhle:
  1. 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);
  2. 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'))
  3. 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:

    Kód: Vybrat vše

             a[i][0] += ' ';
             b[i][0] += 32;
  4. 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é :lol:
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti