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