Ich habe den folgenden Code -Wie hat der String-Terminator ' 0' den gleichen Wert wie die Integer-Konstante 0?
#include <stdio.h>
#define LENGTH 5
int main(){
char* ch[LENGTH] = {"Zero", "One", "Two", "Three", "Four"};
char* pc;
char** ppc;
for(int i=0; i<LENGTH; i++){
ppc = ch+i;
pc = *ppc;
while(*pc != 0){
printf("%c ", *pc);
pc = pc +1;
}
printf("\n");
}
return 0;
}
Es ist ein Beispiel von mehreren indirection mit String.
Der Ausgang
Z e r o
O n e
T w o
T h r e e
F o u r
Hier in while()
Schleife anstelle von *pc != '\0'
wird *pc != 0
verwendet.
Aber beide Ansätze geben die gleiche Ausgabe. Wieso ist es so?
Antworten werden erklären, warum. Ich möchte nur zustimmen, dass es keinen Sinn macht, ein Zeichen während der Zeichenverarbeitung mit einer Ganzzahl zu vergleichen. Es sollte entweder 'while (* pc! = '\ 0')' oder _ 'while (* pc) '_ sein. –