| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
- #include <stdio.h>
 
  
- #define NUM 5
 
  
- int main()
 
 - {
 
 -         char slogans[NUM][100] = {
 
 -                 "I love FishC.com!",
 
 -                 "Keep moving!",
 
 -                 "Impossible is nothing!",
 
 -                 "Just do it!",
 
 -                 "I am what I am!"};
 
 -         int i;
 
  
-         for (i = 0; i < NUM; i++)
 
 -         {
 
 -                 printf("%s\n", slogans[i]);
 
 -         }
 
  
-         return 0;
 
 - }
 
  复制代码 
 
这个程序小甲鱼说可以打印出来这5个字符串。 
两个问题 
第一个问题字符串存放到数组当中是整体存,存放占的空间(比如说是【2】【3】)是一个整体,还是分开存,一个字符一个字符的存,比如说‘ji’这个字符串,是j在【0】【0】,i在【0】【1】,‘\0’在【0】【2】 
第二个问题是,以我个人的理解,如果想打印出来这个五个字符串的话,得是【0】【0】,【0】【1】,【0】【2】,【0】【2】,【0】【4】。
 本帖最后由 sunrise085 于 2020-4-28 21:56 编辑 
 
看上图,这就是二维数组的存储,当然,我没有画全,每行应该有100个单元,每个单元存放一个字符(一个字符就占一个字节) 
对于打印,有不同的方式,%s是打印字符串,直接给出一维数组首地址即可,也就是如你上面的程序中写的那样,printf("%s\n", slogans[i]); 
还可以逐个字符打印,那就是用%c打印了,这时就需要写清楚打印的是哪一行哪一列,这就需要双层循环了
 - #include <stdio.h>
 
 - #define NUM 5
 
 - int main()
 
 - {
 
 -     char slogans[NUM][100] = {
 
 -             "I love FishC.com!",
 
 -             "Keep moving!",
 
 -             "Impossible is nothing!",
 
 -             "Just do it!",
 
 -             "I am what I am!"};
 
 -     int i,j=0;
 
  
-     for (i = 0; i < NUM; i++)
 
 -     {
 
 -         while(slogans[i][j]!='\0')
 
 -             printf("%c", slogans[i][j++]);
 
 -         printf("\n");
 
 -         j=0;
 
 -     }
 
 -     return 0;
 
 - }
 
  复制代码 
 
 
 
 |   
 
 
 
 |