CHAR ARRAY-element

Ik heb dit de afgelopen twee uur opgehangen en het begint me echt te irriteren. Ik gebruik standaard C, probeert een char array’s element af te drukken.

Het volgende is een fragment dat werkt (drukt volledige array),

CreditCard validate_card(long long n) {
    CreditCard cc; // specify new credit card
    cc.n = n; // specify card num as passed
    cc.valid = false; // initialize as invalid
    cc.type = AEX; // initialize at american express
    bool valid;
    char s[20];
    sprintf( s, "%d", n ); // convert credit card number into char array
    printf("%s\n", s);
    return cc;
}

Het volgende fragment werkt niet,

CreditCard validate_card(long long n) {
    CreditCard cc; // specify new credit card
    cc.n = n; // specify card num as passed
    cc.valid = false; // initialize as invalid
    cc.type = AEX; // initialize at american express
    bool valid;
    char s[20];
    sprintf( s, "%d", n ); // convert credit card number into char array
    printf("%s\n", s[0]);
    return cc;
}

Op die nota, als iemand me ook aan mij kan uitleggen hoe ik Char Array-elementen kunnen verbouwen aan Char Pointers, zou ik dankbaar zijn.


Antwoord 1, Autoriteit 100%

Wanneer u deze regel gebruikt.

printf("%s\n", s[0]);

De compiler moet wat waarschuwing afdrukken over mismatch van de formaatstring %sen het overeenkomstige argument, s[0].

Het type s[0]is char, niet char*.

Wat is uw bedoeling?

Als u slechts één teken wilt afdrukken, gebruikt u:

printf("%c\n", s[0]);

Als u de volledige reeks chracters wilt afdrukken, gebruikt u:

printf("%s\n", s);

Antwoord 2, Autoriteit 11%

U moet onderstaande regel vervangen

printf("%s\n", s[0]);

met

printf("%c\n", s[0]);

om 1 teken te printen.

Gebruik een lus om alle tekens 1 op 1 te printen.


Antwoord 3, Autoriteit 6%

Als u alleen het eerste teken van de array moet afdrukken, moet u %cgebruiken, zoals

printf("%c\n", s[0]);

Bekijk deze MSDN referentie

Other episodes