字符串指针问题,和字符串赋值

img


我的代码是这样的:


#include
#include
int main()
{
    int n, m;
    char str[100],pcy[100];
    scanf("%d", &n);
    gets(str);
    scanf("%d", &m);
    char* pstr = str;
    char* ppcy = pcy;
    int i = 0;
    while (*(pstr + i))
    {
        if (i + 1 == m)
        {
            ppcy = pstr + i;
            break;
        }
        i++;
    }
    puts(ppcy);
    return 0;

}

问题如下:

  1. 使用字符指针 是需要先定义并初始化一个字符数组,在赋给字符指针 来避免空指针吗?
  2. 我的字符串那里好像有问题 不懂该如何赋值

1.你这循环完全没有意义,代码不就是ppcy=pstr+m吗
2.这样搞也能输出,但是和题意不符,题意是让你复制出一份来,不是从一半开始打印,你现在能打印,但是其实内存里还是只有一个字符串,只不过是从一半开始打印的
3.指针只是一个工具,是要指向一段内存的,至于这段内存是本来就存在还是现new出来的,不重要

1,不是,可以指向一个常量字符串(如 char* s="abc"),或者自己申请内存(如 char s = (char)malloc(sizeof(char)*长度)),自己申请内存的话要记得释放内存
2,赋值就直接=,比如本题
str[100]="abc"