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 %s
en 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 %c
gebruiken, zoals
printf("%c\n", s[0]);
Bekijk deze MSDN referentie