【发布时间】:2014-10-30 01:30:07
【问题描述】:
有人能告诉我为什么主循环在第五次迭代后死掉了 将字符数组减少到 1 个最终元素的预期目标是什么?我得到了这个 far 并且完全被消耗,因为它们应该是调用返回的 11 次迭代
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) - 1做的几个地方当strlen(word)为0 时会失败;putchar('\0')是一个错误。'\0'是不可打印的字符,它在内部用于标记字符串的结尾,但您不应该尝试将其写入流
标签: c arrays string loops pointers