yexing 发表于 2020-4-4 16:26:52

S1E24 指针和二维数组课后题动动手0的报错

本帖最后由 yexing 于 2020-4-4 16:36 编辑

原题:


我的代码:
#include <stdio.h>

#define MAX 1024

int main()
{
        char input; //用于获取用户输入的字符串
        char str;
        char ch;
        char *pstr = str, *target = input;
        int i, j, temp;
       
        for (i = 0; (ch = getchar()) != '\n'; i++)
        {
                input = ch;
        }
       
        temp = 0;
        for (i = 0; i < 3; i++)
        {
                for (j = 0; j < 3; j++)
                {
                        *(*(pstr+i)+j) = *(target+temp);
                        temp++;
                }
        }
       
        for (i = 0; i < 3; i++)
        {
                for (j = 0; j < 3; j++)
                {
                        printf("%c ", **(pstr+i)+j)
                }
                printf("\n");
        }
       
        return 0;
}

报错提示:

注:第23行标红

请问怎么解决报错呢?代码刚刚编写,还未编译测试,如果还有bug,也请大佬指出来{:10_303:}

qiuyouzhi 发表于 2020-4-4 16:27:50

本帖最后由 qiuyouzhi 于 2020-4-4 16:29 编辑

32行没分号,而且那个p是哪里来的?

yexing 发表于 2020-4-4 16:30:44

qiuyouzhi 发表于 2020-4-4 16:27
32行没分号,而且那个p是哪里来的?

不好意思,是 pstr ,改过来了

yexing 发表于 2020-4-4 16:33:22

qiuyouzhi 发表于 2020-4-4 16:27
32行没分号,而且那个p是哪里来的?

把一些低级错误改了,{:10_262:}剩下23行标红应该怎么解决?

chxchxkkk 发表于 2020-4-4 16:33:36

**(pstr+i)+j = *(target+temp); ===>>>*(*(pstr+i)+j) = *(target+temp);

yexing 发表于 2020-4-4 16:36:13

chxchxkkk 发表于 2020-4-4 16:33
**(pstr+i)+j = *(target+temp); ===>>>*(*(pstr+i)+j) = *(target+temp);

还是报错标红{:10_262:}

sunrise085 发表于 2020-4-4 17:11:00

*(*(pstr+i)+j) = *(target+temp);
左边这是数组指针的写法,而你定义的仅仅是一个普通的指针而已。
应该写成*(pstr+i*3+j) = *(target+temp);
32行的printf内也应该这样写
页: [1]
查看完整版本: S1E24 指针和二维数组课后题动动手0的报错