使用 isdigit 和 isalpha 设置相等的 char 数组
setting char arrays equal to eachother with isdigit and isalpha
我试图将一个字符数组设置为等于 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
是垃圾。
因此,在您的arrayNum
或arrayAlpha
中使用时,[k]
问题不是以0
开头。
简单的更改只会减去另一个的长度。
arrayAlpha[k - strlen(arrayNum)] = palind[k];
arrayNum[k - strlen(arrayAlpha)] = palind[k];
因为lengthOfPalind = lengthOfArrayAlpha + lengthOfArrayNum
假设palind
只包含字母或数字。