我在Visual Studio C ++中编写了代码并将其转移到G ++编译器。虽然没有编译错误,但是当我执行它时,我在Visual Studio上工作的代码现在无法在新编译器上运行:问题是我的程序在没有编译时报告格式错误。
以下是关注的功能:
void checkFormat(char *token, bool &checkNum, bool &checkString)
{
int nums = 0; //tracks # of digits in the token
int chars = 0; //tracks # of letters in the token
for(int i = 0; i < strlen(token); i++) //checks for formatting (must be either digits or letters)
{
if(isalpha(token[i]))
chars++;
else if(isdigit(token[i]))
nums++;
else
{
i = strlen(token);
checkNum = false;
checkString = false;
}
if (i == strlen(token) - 1)
{
if (nums > chars && chars == 0)
checkNum = true;
else if (chars > nums && nums == 0)
checkString = true;
else
{
checkNum = false;
checkString = false;
}
}
}
}
当我在这一行上使用这个语句时:“SAL 210 30”由于某种原因它适用于SAL,它适用于210,但它在30上失败。对于30,checkNum保持为false而不是true。有什么想法吗?