萝卜luobo 发表于 2018-10-10 23:26:50

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是什么原理想了一天想不出

claws0n 发表于 2018-10-10 23:43:34

保护措施 Wow 只有三个字母,但 i 循环到 i < 5
(*p) 是 array 的意思,找出字符串的长度,如果超过,跳出当前循环

啊涂涂 发表于 2018-10-11 14:39:52

就和楼上说的一样,这就是一种退出循环的方法,和平时写的不太一样。平时退出循环都是要for或者while条件不满足了退出循环,这个程序由于自身原因,所以不能把循环条件写在for或者while里,就用了这个方法

萝卜luobo 发表于 2018-10-13 22:08:51

claws0n 发表于 2018-10-10 23:43
保护措施 Wow 只有三个字母,但 i 循环到 i < 5
(*p) 是 array 的意思,找出字符串的长度,如果超过 ...

我想问的是i > strlen((*p)) - 1什么意思,为什么这个i和字符长度能扯上关系

claws0n 发表于 2018-10-13 22:15:35

萝卜luobo 发表于 2018-10-13 22:08
我想问的是i > strlen((*p)) - 1什么意思,为什么这个i和字符长度能扯上关系

strlen() 这个函数你知道??就是返回字符串的长度
i 是一个用来遍历的指针,因为你的输出是把原本打横的字符串竖起来,会跑到 5,但是你最短的只有 3,会越界

萝卜luobo 发表于 2018-10-13 22:21:45

claws0n 发表于 2018-10-13 22:15
strlen() 这个函数你知道??就是返回字符串的长度
i 是一个用来遍历的指针,因为你的输出是把原本打横 ...

strlen()我知道,我想知道i > strlen((*p)) - 1的原理,就是为什么要写这个判断语句{:5_99:}

claws0n 发表于 2018-10-13 22:23:48

萝卜luobo 发表于 2018-10-13 22:21
strlen()我知道,我想知道i > strlen((*p)) - 1的原理,就是为什么要写这个判断语句

保护措施,因为下一句 printf("%c ", (*p)[i]);
j 是 array 的第几个元素,i 是每一个字符串里的第几个字母

萝卜luobo 发表于 2018-10-13 22:27:01

claws0n 发表于 2018-10-13 22:23
保护措施,因为下一句 printf("%c ", (*p));
j 是 array 的第几个元素,i 是每一个字符串里的第几 ...

懂了,谢谢
页: [1]
查看完整版本: S1E23的问题,求助谢谢