strchr
で最初のオカレンスを見つけた後、2文字以上を取得しようとしています。最初のケースではCのstrchrの後ろに2つ以上の文字が得られます
foo;bar;2012 -> should output foo;b
foo;caz; -> should output foo;c
foo; -> should output foo (there are no +2 chars)
foo -> null
、私は私のような何かを行うことができます理解、
#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;
}
しかし、私はせずに、文字列内のポインタを進めることができるかどうかをチェックする適切な方法は何でしょう:文字列は次のように見ることができます行く?
あなたは2文字以上、またはそれらの任意の数を処理する必要がある場合は、その長さを取得するためにはstrlen(strの)を使用します。その後、pchと比較するstr + lenで終了ポインタを作成するか、lenと比較するpch-strでインデックスを見つけることができます。次に、減算して、文字列の最後にいくつの文字があるかを調べます。 –
@ザンリンクスありがとう、素晴らしいことを知っています。 –
'* pch ++;'を 'if(* pch)pch ++;'に変更してみてください – Dmitri