使用 isdigit 和 isalpha 设置相等的 char 数组

setting char arrays equal to eachother with isdigit and isalpha

本文关键字:char 数组 设置 isdigit isalpha 使用      更新时间:2023-10-16

我试图将一个字符数组设置为等于 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];
}
}

给定输入:

char palind[30] = "12345abcde";
  • arrayAlpha是垃圾。

  • arrayNum"12345"

然而

char palind[30] = "abcde12345";
  • arrayAlpha"abcde".
  • arrayNum是垃圾。

因此,在您的arrayNumarrayAlpha中使用时,[k]问题不是以0开头。

简单的更改只会减去另一个的长度。

arrayAlpha[k - strlen(arrayNum)] = palind[k];
arrayNum[k - strlen(arrayAlpha)] = palind[k];

因为lengthOfPalind = lengthOfArrayAlpha + lengthOfArrayNum假设palind只包含字母或数字。