S1E23的问题,求助谢谢
#include <stdio.h>#include <string.h>
int main()
{
char *array = {"FishC", "Five", "Star", "Good", "Wow"};
char *(*p) = &array;
int i, j;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (i > strlen((*p)) - 1)
{
break;
}
printf("%c ", (*p));
}
printf("\n");
}
return 0;
}
这里的i > strlen((*p)) - 1是什么原理想了一天想不出 保护措施 Wow 只有三个字母,但 i 循环到 i < 5
(*p) 是 array 的意思,找出字符串的长度,如果超过,跳出当前循环 就和楼上说的一样,这就是一种退出循环的方法,和平时写的不太一样。平时退出循环都是要for或者while条件不满足了退出循环,这个程序由于自身原因,所以不能把循环条件写在for或者while里,就用了这个方法 claws0n 发表于 2018-10-10 23:43
保护措施 Wow 只有三个字母,但 i 循环到 i < 5
(*p) 是 array 的意思,找出字符串的长度,如果超过 ...
我想问的是i > strlen((*p)) - 1什么意思,为什么这个i和字符长度能扯上关系 萝卜luobo 发表于 2018-10-13 22:08
我想问的是i > strlen((*p)) - 1什么意思,为什么这个i和字符长度能扯上关系
strlen() 这个函数你知道??就是返回字符串的长度
i 是一个用来遍历的指针,因为你的输出是把原本打横的字符串竖起来,会跑到 5,但是你最短的只有 3,会越界 claws0n 发表于 2018-10-13 22:15
strlen() 这个函数你知道??就是返回字符串的长度
i 是一个用来遍历的指针,因为你的输出是把原本打横 ...
strlen()我知道,我想知道i > strlen((*p)) - 1的原理,就是为什么要写这个判断语句{:5_99:} 萝卜luobo 发表于 2018-10-13 22:21
strlen()我知道,我想知道i > strlen((*p)) - 1的原理,就是为什么要写这个判断语句
保护措施,因为下一句 printf("%c ", (*p)[i]);
j 是 array 的第几个元素,i 是每一个字符串里的第几个字母 claws0n 发表于 2018-10-13 22:23
保护措施,因为下一句 printf("%c ", (*p));
j 是 array 的第几个元素,i 是每一个字符串里的第几 ...
懂了,谢谢
页:
[1]