这个程序没有识别第二个for循环。打印长度后,它就停止了。寻找这个结果:41 W(数组的大小:5 4-是的,这是数字1-是的,这是数字W-是的,这是一个字母表。是的,这是字母表。(不,这不是数字或字母
#include <stdio.h>
int main()
{
char misc[5];
misc[0] = '4';
misc[1] = '1';
misc[2] = 'W';
misc[3] = 'H';
misc[4] = '(';
misc[5] = '\0';
size_t length = sizeof(misc)/sizeof(misc[0]);
for(int a; a < length; a++)
{
printf("%c", misc[a]);
}
printf("\nSize of Array: %d\n", length);
for(int i; i<length; i++)
{
if (misc[i] >= '0' && misc[i] <= '9')
{
printf("%c - ", misc[i]);
printf("Yes, this is a number\n");
}
else if ((misc[i] >= 'a' && misc[i] <= 'z') || (misc[i] >= 'A' && misc[i] <= 'Z'))
{
printf("%c - Yes, this is an alphabet.\n", misc[i]);
}
else
{
printf("%c - ", misc[i]);
printf("No, this is not a number or alphabet\n");
}
}
return 0;
}发布于 2022-04-03 14:54:48
对于数组的长度,您有一个越界错误(逐个关闭)。此外,您也没有用0初始化int a。下面的代码适用于我。
#include <stdio.h>
int main()
{
size_t length = 6;
char misc[length]; // 6 not 5
misc[0] = '4';
misc[1] = '1';
misc[2] = 'W';
misc[3] = 'H';
misc[4] = '(';
misc[5] = '\0'; // not out of bounds anymore
for(int a = 0; a < length; a++) // Initilize with 0 here
{
printf("%c", misc[a]);
}
printf("\nSize of Array: %d\n", length);
for(int i = 0; i<length; i++) // Initilize with 0 here, too
{
if (misc[i] >= '0' && misc[i] <= '9')
{
printf("%c - ", misc[i]);
printf("Yes, this is a number\n");
}
else if ((misc[i] >= 'a' && misc[i] <= 'z') || (misc[i] >= 'A' && misc[i] <= 'Z'))
{
printf("%c - Yes, this is an alphabet.\n", misc[i]);
}
else
{
printf("%c - ", misc[i]);
printf("No, this is not a number or alphabet\n");
}
}
return 0;
}发布于 2022-04-03 14:53:41
您的代码有未定义的行为。这几乎就是解释的结尾。
misc
i,而从未初始化ihttps://stackoverflow.com/questions/71726941
复制相似问题