有人可以建议为什么主循环在第五次迭代后死亡永远不会完成 它的目标是将字符数组减少到1个最终元素?这 到目前为止,我已经得到了它,我完全消耗掉它们应该是11次迭代由呼叫乱七八糟C中的字符阵列
size_t strlen(char const *str)
{
int length = 0;
while (*str++ !='\0')
{
length += 1;
}
return length;
}
void abracadabra(char *word)
{
int i, c;
int len = strlen(word)-1;
for (i = 0; i <= len; i++)
{
putchar(*word);
putchar(' ');
*(word++);
}
}
int main()
{
char word[250];
int i, j;
printf ("enter your word:\n");
scanf ("%[^\n]s", &word);
for (i = 0; i <= strlen(word)-1; i++)
{
abracadabra(word);
putchar('\0');
printf("\n");
for (j = 0; j <= i; j++)
{
putchar('\0');
}
word[strlen(word) - 1] = '\0';
}
word[strlen(word)-1] = '\0';
printf("\n");
system("pause");
return 0;
}
除了接受的答案还有其他错误, strlen(word)'为0时失效的几个地方'strlen(word) - 1';和'putchar('\ 0')'是一个错误。 ''\ 0''是一个不可打印的字符,它在内部用于标记字符串的结尾,但不应该尝试写入流 – 2014-10-30 02:48:28