我打印这个字符串列表的方式有什么问题?
What is wrong with how I'm printing this string list?
我创建了一个字符串列表并使用以下代码打印它:
int i;
char* p = "My[=10=]name[=10=]is[=10=][=10=]";
for (i = 0; *(p + i) != '[=10=]' && *(p + i + 1) != '[=10=]'; i++)
{
if (*(p + i) == '[=10=]')
printf(" ");
else
printf("%c", *(p + i));
}
为什么只打印 M
,而没有打印其余字符串?
对于i == 1
的值,条件检查语句
*(p + i) != '[=10=]' && *(p + i + 1) != '[=10=]'
失败(评估为 FALSE),因此 for
循环终止。
根据您的意图,您可以将条件检查修改为
for (i = 0; !(*(p + i) == '[=11=]' && *(p + i + 1) == '[=11=]'); i++)
{
if (*(p + i) == '[=11=]')
printf(" ");
else
printf("%c", *(p + i));
}
翻译成人类可读的逻辑,看起来像,
继续,直到 *(p + i)
和 *(p + i + 1)
都为 '[=16=]'
*(p + i + 1)
当 i
为 1 时将等于 [=11=]
。
我创建了一个字符串列表并使用以下代码打印它:
int i;
char* p = "My[=10=]name[=10=]is[=10=][=10=]";
for (i = 0; *(p + i) != '[=10=]' && *(p + i + 1) != '[=10=]'; i++)
{
if (*(p + i) == '[=10=]')
printf(" ");
else
printf("%c", *(p + i));
}
为什么只打印 M
,而没有打印其余字符串?
对于i == 1
的值,条件检查语句
*(p + i) != '[=10=]' && *(p + i + 1) != '[=10=]'
失败(评估为 FALSE),因此 for
循环终止。
根据您的意图,您可以将条件检查修改为
for (i = 0; !(*(p + i) == '[=11=]' && *(p + i + 1) == '[=11=]'); i++)
{
if (*(p + i) == '[=11=]')
printf(" ");
else
printf("%c", *(p + i));
}
翻译成人类可读的逻辑,看起来像,
继续,直到 *(p + i)
和 *(p + i + 1)
都为 '[=16=]'
*(p + i + 1)
当 i
为 1 时将等于 [=11=]
。