2025(e)ko martxoaren 21(a), ostirala

Kateen hasieraketak

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






  • KateenHasieraketak_1.cbp | main.c  
  • KateenHasieraketak_2.cbp | main.c  


 

iruzkinik ez:

Argitaratu iruzkina