我有一个字符串,例如"ABCDEFG&";,我想检查这个字符串中是否有某个字符(该字符串还包含换行符(。我有以下代码,但它似乎不起作用。有谁有更好的主意吗?
当前正在使用strchr来检查它是否为NULL,这意味着循环中的当前字符不存在于valid_characters变量中。
bool check_bad_characters(FILE *inputFile)
{
int c;
char valid_characters[28] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
while ((c = fgetc(inputFile)) != EOF) {
char charC = c + '0';
if (strchr(valid_characters, c) == NULL && strncmp(&charC, "n", 1) != 0)
{
// This means that there was a character in the input file
// that is not valid.
return false;
}
}
return true;
}
您的代码认为n
是一个有效字符,因此将其放在有效字符列表中,而不是单独处理。你的日常工作可以很简单:
bool check_bad_characters(FILE *inputFile)
{
int c;
while ((c = fgetc(inputFile)) != EOF)
if (!strchr("ABCDEFGHIJKLMNOPQRSTUVWXYZ n", c))
return false;
return true;
}