可以讲一下下面那个程序的执行过程吗?没看明白,
我觉得就应该输出2个*,它不是遇到\0就退出循环吗?
这个问题的确有趣,我测试了一番,如下代码是可以的
#include <stdio.h>
int main()
{
char s[10] = "\ta\018bc";
char *p = &s[0];
s[2] = '\0';
for (; *p != '\0'; p++)
printf("*");
return 0;
}
然后我写了这样的代码
#include <stdio.h>
int main()
{
char *s = "\ta\018bc";
for (; *s != '\0'; s++)
printf("%d ", (int)*s);
return 0;
}
9 97 1 56 98 99
这说明\01被当作了八进制的\1,而不是\0和1
继续测试
#include <stdio.h>
int main()
{
char *s = "\ta\0\018bc";
for (; *s != '\0'; s++)
printf("*");
return 0;
}
这个才是符合你本意的,并且输出两个*了。
void DisplayBoard(char borad[ROW][COL], int row, int col)
{
int i = 0;
for (i = 0; i < row; i++)
{
int j = 0;
for (j = 0; j < col; j++)
{
printf(" %c ", borad[i][j]);
if (j < col - 1)
{
printf("|");
}
}
printf("\n");
if (i < row - 1)
{
for (j = 0; j < col; j++)
{
printf("---");
if (j < col - 1)
printf("|");
}
printf("\n");
}
}
}