xiaojiuwu 发表于 2015-3-10 08:53:06

新人求教?

         int i;
        char str;
        printf("input:");
        for(i=0;i<3;i++)
                scanf("%s",str);
        for(i=0;i<3;i++)
                printf("%s\n",str);   每次输入 aaa 回车bbb回车 ccc回车   结果显示都是aaabbbcccaaabbbccc不知道怎么回事书上都是这样写   可为什么不是显示aaa   bbb    ccc该怎么解决呢这是哪里的问题

ANDES 发表于 2015-3-10 11:20:42

二维数组的定义你还没弄清楚,建议网上搜下二维数组的定义去看下,再看下别人怎么写二维数组的代码。还有scanf里面str[]前面要加&,才能把输入的值赋给数组;弄清楚%s和%c这些符号的意思。

雪是梅之香 发表于 2015-3-11 17:37:45

以下是我的理解
首先输入没问题,其次就是要知道二维数组的存储方式,在C语言中,二维数组是按照一行一行的方式连续存储的,所以楼主在使用 for(i=0;i<3;i++)printf("%s\n",str);语句进行输出时,(这里采用指针解释,str就相当于是一个指针)第一次,指向二维数组的首地址str,由于是按照%s的形式输出,在没有遇到终止符之前会一直输出,也就是aaabbbccc,第二次,此时指向str,同样按照上面的方法输出,bbbccc,第三次也一样,ccc,如果楼主想要按照aaa   bbb   ccc的形式输出,我暂时想到的方法就是
for(i=0;i<3;i++){
      for(j=0;j<3;j++)
      {
            printf("%c",str);
      }
      printf("\n");
    }
页: [1]
查看完整版本: 新人求教?