Ich versuche, 2 weitere Zeichen nach dem Finden der ersten Vorkommen mit strchr
über einen Char-Zeiger zu bekommen. Die Zeichenfolge kann wie folgt aussehen:Advance Zeiger und bekomme 2 weitere Zeichen nach strchr in C
foo;bar;2012 -> should output foo;b
foo;caz; -> should output foo;c
foo; -> should output foo (there are no +2 chars)
foo -> null
Für den ersten Fall, Ich denke, ich kann wie,
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "foo;bar;2012";
char *pch = NULL;
if ((pch=strchr(str,';')) != NULL) {
*pch++;
*pch++;
*pch = '\0';
}
puts(str);
return 0;
}
etwas tun, aber was ist der richtige Weg, zu überprüfen, ob ich den Zeiger innerhalb der Zeichenfolge voranbringen kann, ohne gehen über?
Wenn Sie mehr als 2 Zeichen handhaben müssen, oder eine beliebige Anzahl von ihnen, dann strlen (str) verwenden, um die Länge zu bekommen . Danach können Sie einen Endzeiger mit str + len erstellen, um ihn mit pch zu vergleichen, oder Sie können Ihren Index mit pch - str finden, um ihn mit len zu vergleichen. Dann subtrahieren Sie, um zu ermitteln, wie viele Zeichen am Ende der Zeichenfolge stehen. –
@ZanLynx Danke, großartig darüber zu wissen. –
Versuchen Sie, jedes '* pch ++;' zu 'if (* pch) pch ++;' – Dmitri