| ZER DAKIDAN: Array datu-mota ezagutzen dut, eta kateak deritzen char datu-motako elementuen arrayak ezagutzen ditut ere. ZER IKASIKO DUDAN: Karaktere-kateak nola hasieratzen diren ikasiko dut. |
Array baten hasieraketa honela egiten den bezala, kate baten hasieraketa modu berdintsuan egingo da:
float afBektorea[3] = {-3.0, 5.7, -7.5};
Hurrengo programan kateen ondoko hiru hasieraketak egin dira, non MAXIMOA konstanteak 6 balio duen:
char sHutsik[MAXIMOA] = ""; // 6 null char sZifrak[MAXIMOA] = "012"; // 3 digitu + 3 null char sLetrak[MAXIMOA] = "ABCD"; // 4 digitu + 2 null
Ikusi hasieraketa horien efektuak programa hau exekutatuz:
/* KateenHasieraketak_1: katea da karaktereak gordetzen dituen arraya.
Kateen neurriak aldez aurretik finkaturik. */
// Karaktere-kateak '\0' markaz butazen diren arrayak dira C lengoaian
// Kate baten hasieraketa katearen definizioan egin daiteke
// strlen() funtzioak katearen luzera efektiboa adierazten du
#include <stdio.h>
#include <string.h> // strlen() funtziorako
#include <conio.h> // getch() funtziorako
#define MAXIMOA 6 // katea mugatzeko konstantea,
// 5 karaktere + null mugatzailea
int main()
{
char sHutsik[MAXIMOA] = ""; // 6 null
char sZifrak[MAXIMOA] = "012"; // 3 digitu + 3 null
char sLetrak[MAXIMOA] = "ABCD"; // 4 letra + 2 null
int iKont;
// lehen hasieraketaren honen ordez
// char sHutsik[MAXIMOA]=""; // 6 null
// for hau idatz daiteke:
// for (iKont=0; iKont < MAXIMOA; iKont++)
// sHutsik[iKont] = '\0';
printf("\n");
printf("\n char sHutsik[MAXIMOA]=\"\"; // hasieraketarekin");
printf("\n Luzera=%d sHutsik=|%s| puts()=", (int)strlen(sHutsik), sHutsik);
puts(sHutsik);
printf(" ASCII KODEA KARAKTEREA");
printf("\n ----------- ----------");
for (iKont=0; iKont < MAXIMOA; iKont++)
{
printf("\n sHutsik[%d] = %2d sHutsik[%d] = %c", iKont, (int)sHutsik[iKont], iKont, sHutsik[iKont]);
if (iKont >= strlen(sHutsik))
printf(" <-- null marka");
}
printf("\n");
printf("\n char sZifrak[MAXIMOA]=\"012\"; // hasieraketarekin");
printf("\n Luzera=%d sZifrak=|%s| puts()=", (int)strlen(sZifrak), sZifrak);
puts(sZifrak);
printf(" ASCII KODEA KARAKTEREA");
printf("\n ----------- ----------");
for (iKont=0; iKont < MAXIMOA; iKont++)
{
printf("\n sZifrak[%d] = %2d sZifrak[%d] = %c", iKont, (int)sZifrak[iKont], iKont, sZifrak[iKont]);
if (iKont >= strlen(sZifrak))
printf(" <-- null marka");
}
printf("\n");
printf("\n char sLetrak[MAXIMOA]=\"ABCD\"; // hasieraketarekin");
printf("\n Luzera=%d sLetrak=|%s| puts()=", (int)strlen(sLetrak), sLetrak);
puts(sLetrak);
printf(" ASCII KODEA KARAKTEREA");
printf("\n ----------- ----------");
for (iKont=0; iKont < MAXIMOA; iKont++)
{
printf("\n sLetrak[%d] = %2d sLetrak[%d] = %c", iKont, (int)sLetrak[iKont], iKont, sLetrak[iKont]);
if (iKont >= strlen(sLetrak))
printf(" <-- null marka");
}
sLetrak[2] = '\0';
printf("\n");
printf("\n sLetrak[2]='\\0'; // egin ondoren");
printf("\n Luzera=%d sLetrak=|%s| puts()=", (int)strlen(sLetrak), sLetrak);
puts(sLetrak);
printf(" ASCII KODEA KARAKTEREA");
printf("\n ----------- ----------");
for (iKont=0; iKont < MAXIMOA; iKont++)
{
printf("\n sLetrak[%d] = %2d sLetrak[%d] = %c", iKont, (int)sLetrak[iKont], iKont, sLetrak[iKont]);
if (iKont == strlen(sLetrak))
printf(" <-- null marka");
}
printf("\n\n\n Edozein tekla sakatu exekuzioa amaitzeko... ");
getch();
printf("\n");
return 0;
}
Array baten hasieraketa honela egiten den bezala, kate baten hasieraketa modu berdintsuan egingo da:
float afBektorea[] = {13.2, 8.7, 29.3};
Hurrengo programan hiru kateen ondoko hasieraketak egin dira, non kateen neurriak deklarazioan bertan erabakitzen diren:
char sHutsik[] = ""; // null mugatzailea char sZifrak[] = "012"; // 3 digitu + null mugatzailea char sLetrak[] = "ABCD"; // 4 digitu + null mugatzailea
Programa hau exekutatu eta ikusi hasieraketa horien efektuak:
/* KateenHasieraketak_2: katea da karaktereak gordetzen dituen arraya.
Kateen neurriak aldez aurretik finkaturik. */
// Karaktere-kateak '\0' markaz butazen diren arrayak dira C lengoaian
// Kate baten hasieraketa katearen definizioan egin daiteke
// strlen() funtzioak katearen luzera efektiboa adierazten du
#include <stdio.h>
#include <string.h> // strlen() funtziorako
#include <conio.h> // getch() funtziorako
int main()
{
char sHutsik[] = ""; // null mugatzailea
char sZifrak[] = "012"; // 3 digitu + null mugatzailea
char sLetrak[] = "ABCD"; // 4 letra + null mugatzailea
int iKont;
printf("\n");
printf("\n char sHutsik[]=\"\"; // hasieraketarekin");
printf("\n Luzera=%d sHutsik=|%s| puts()=", (int)strlen(sHutsik), sHutsik);
puts(sHutsik);
printf(" ASCII KODEA KARAKTEREA");
printf("\n ----------- ----------");
for (iKont=0; iKont < strlen(sHutsik)+2; iKont++)
{
printf("\n sHutsik[%d] = %2d sHutsik[%d] = %c", iKont, (int)sHutsik[iKont], iKont, sHutsik[iKont]);
if (iKont == strlen(sHutsik))
printf(" <-- posizio honetan null marka");
if (iKont == strlen(sHutsik)+1)
printf(" <-- posizio hau ez da katearena");
}
printf("\n");
printf("\n char sZifrak[]=\"012\"; // hasieraketarekin");
printf("\n Luzera=%d sZifrak=|%s| puts()=", (int)strlen(sZifrak), sZifrak);
puts(sZifrak);
printf(" ASCII KODEA KARAKTEREA");
printf("\n ----------- ----------");
for (iKont=0; iKont < strlen(sZifrak)+2; iKont++)
{
printf("\n sZifrak[%d] = %2d sZifrak[%d] = %c", iKont, (int)sZifrak[iKont], iKont, sZifrak[iKont]);
if (iKont == strlen(sZifrak))
printf(" <-- posizio honetan null marka");
if (iKont == strlen(sZifrak)+1)
printf(" <-- posizio hau ez da katearena");
}
printf("\n");
printf("\n char sLetrak[]=\"ABCD\"; // hasieraketarekin");
printf("\n Luzera=%d sLetrak=|%s| puts()=", (int)strlen(sLetrak), sLetrak);
puts(sLetrak);
printf(" ASCII KODEA KARAKTEREA");
printf("\n ----------- ----------");
for (iKont=0; iKont < strlen(sLetrak)+2; iKont++)
{
printf("\n sLetrak[%d] = %2d sLetrak[%d] = %c", iKont, (int)sLetrak[iKont], iKont, sLetrak[iKont]);
if (iKont == strlen(sLetrak))
printf(" <-- posizio honetan null marka");
if (iKont == strlen(sLetrak)+1)
printf(" <-- posizio hau ez da katearena");
}
sLetrak[2] = '\0';
printf("\n");
printf("\n sLetrak[2]='\\0'; // egin ondoren");
printf("\n Luzera=%d sLetrak=|%s| puts()=", (int)strlen(sLetrak), sLetrak);
puts(sLetrak);
printf(" ASCII KODEA KARAKTEREA");
printf("\n ----------- ----------");
for (iKont=0; iKont < strlen(sLetrak)+2; iKont++)
{
printf("\n sLetrak[%d] = %2d sLetrak[%d] = %c", iKont, (int)sLetrak[iKont], iKont, sLetrak[iKont]);
if (iKont == strlen(sLetrak))
printf(" <-- posizio honetan null marka");
if (iKont == strlen(sLetrak)+1)
printf(" <-- posizio hau ez da katearena");
}
printf("\n\n\n Edozein tekla sakatu exekuzioa amaitzeko... ");
getch();
printf("\n");
return 0;
}

iruzkinik ez:
Argitaratu iruzkina