Ich versuche, C zu lernen, also ging ich, um einige der Coderbyte-Herausforderungen in C zu versuchen, von denen einer eine Zeichenfolge umzukehren ist. Nach gettung mehrere durch Kompilierungsfehlern Ich habe versucht, für Beispiele der Suche Syntax und stieß dieses auf http://www.programmingsimplified.com/c-program-reverse-stringKann mir jemand diesen Code erklären? Ich bin neu in C
#include<stdio.h>
int string_length(char*);
void reverse(char*);
main()
{
char string[100];
printf("Enter a string\n");
gets(string);
reverse(string);
printf("Reverse of entered string is \"%s\".\n", string);
return 0;
}
void reverse(char *string)
{
int length, c;
char *begin, *end, temp;
length = string_length(string);
begin = string;
end = string;
for (c = 0; c < length - 1; c++)
end++;
for (c = 0; c < length/2; c++)
{
temp = *end;
*end = *begin;
*begin = temp;
begin++;
end--;
}
}
int string_length(char *pointer)
{
int c = 0;
while(*(pointer + c) != '\0')//I DON'T UNDERSTAND THIS PART!!!!!
c++;
return c;
}
c ist nicht einmal ein Zeichen, also warum sollten Sie es hinzufügen? Oder ist der Zeiger eine Art Index, der den Kontext der while-Schleife berücksichtigt?
'gets (string);' bedeutet, dass Sie von altem text/instructor lernen, da 'gets() 'von C seit C11 gelöscht wurde. – chux
Wie von @chux erwähnt, wird gets() veraltet. Du solltest fgets() benutzen, was auch einen Pufferüberlauf verhindert. –
Re: "// Ich verstehe diesen Teil nicht:" 'Zeiger' ist die Adresse des ersten Elements von' string'. Da eine Zeichenfolge aus Zeichen besteht, ist die Größe eines Zeichens "1" und eine Zeichenfolge wird durch "\ 0" (Nullzeichen) beendet. Der Zähler wird weitergeschaltet, bis er "\ 0" erreicht und den letzten Wert zurückgibt. Bitte nehmen Sie den Rat gegen die Verwendung von 'gets()' _very_ ernst. – user3078414