【发布时间】:2023-03-22 04:32:01
【问题描述】:
我试图将 char 数组设置为等于 2 个其他数组,具体取决于第一个数组中的元素是数字还是字母。该代码对我来说具有逻辑意义,但 for 循环后其他 2 个字符串的输出与逻辑不对应。是因为其他 2 个循环中某处缺少空值还是代码本身无效? arrayAlpha、arrayNum 和 palind 都是长度为 30 个元素的 char 数组,而字符串长度在 for 循环开始之前已经确定。
for(int k=0; k<=stringLength; k++)
{
if( isalpha(palind[k])){
arrayAlpha[k]=palind[k];}
if ( isdigit(palind[k]))
{
arrayNum[k]=palind[k];
}
}
【问题讨论】:
-
你能给出你预期的输出和样本输入吗?如果您的问题与
isalpha/isdigit或检查回文有关,那会很混乱 -
@codekaizer 是的,例如我在 palind[] 中的字符串将是 abc123 所以我希望其他 2 个字符串对于 arrayAlpha 具有 abc,对于 arrayNum 具有 123
-
什么是
palind?char*?或std::string?还是别的什么? -
@edmonda7 从逻辑上讲,你不认为你需要两个不同的下标而不是一个
k吗?如果palin中有 50 个字母字符和 1 个数字字符怎么办? -
@edmonda7 -- 如果唯一的数字是最后一个字符并且有 50 个字符怎么办?你的
k下标不是0,而是49,你将写信给arrayNum[49],而不是arrayNum[0]。您需要两个下标,一个用于跟踪您在 alpha 数组中的位置,另一个用于跟踪您在 digit 数组中的位置。