それらの関数は何をチェックしますか?
私が理解していることから、彼らは単語に英数字以外の文字が含まれているかどうかをチェックすることになっています。私はそれがこれをどのように行うのか理解していません。
私の理解:
- 最初のチェックは長さです-これはOKです。
- 2番目のチェックは、文字が文字であるかどうかです。
IsLetter(symbol[0]))
FALSEと評価されます。これは論理的に否定されます。- 3番目の機能は上記と同じです。
私が理解していなかったのは、4番目のものです
IsLetterOrDigit(*symbol))
。
単語に英数字以外の文字が含まれているかどうかをどのように確認しますか?
コード:
int IsSymbolValid(char* symbol)
{
int len = strlen(symbol);
if ((len == 0) || (len > MAX_SYMBOL_SIZE))
{
strcpy(LastParsingError, "Invalid symbol length");
return 0;
}
if (!IsLetter(symbol[0]))
{
strcpy(LastParsingError, "Symbol name has to start with letter");
return 0;
}
while (*symbol != 0)
{
if (IsLetterOrDigit(*symbol))
{
strcpy(LastParsingError, "Symbol name can contain only letters and digits");
return 0;
}
++symbol;
}
return 1;
}
int IsLetter(char ch)
{
return (((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')));
}
int IsDigit(char ch)
{
return ((ch >= '0') && (ch <= '9'));
}
int IsLetterOrDigit(char ch)
{
return (IsLetter(ch) && IsDigit(ch));
}