設計規則に基づいて、c を使用して簡単な文法チェッカーを作成しようとしています。母音で始まる単語を検索し、識別子が「a」ではなく「an」であることを確認する a-an ルールを設計したい場合。私は次の機能を試しました:
void TheFirstRule(char string[])
{
char *pointer;
pointer=strstr(string,"a u");
while(pointer!=NULL)
{
strncpy(pointer,"an ",3);
pointer=strstr(string,"a u");
}
}
この関数は、文字列を受け取り、出現する "a u" を検索し、それを "an " に置き換えます。正しく動作しますが、問題は、3 文字ではなく 4 文字を書き込むため、結果が常に間違っていることです。次の例を検討してください。
入力: 傘
出力: 傘
それを正しく行う方法はありますか?