qq_43540197
™我真⁶⁶⁶₆₆₆⁶⁶⁶
采纳率100%
2019-01-04 16:26

C/C++ 库函数strcpy的使用问题

已采纳

近来,在strcpy的使用中发现了一个很难想清楚的问题。鄙人水平不足,还请大佬们指点。

问题:

我想问一下为什么下面这串代码q[0]与q[1]的交换不能使用strcpy(下面注释掉的代码),q[0]和q[1]指向的不就是那两个字符串吗?难道是字符串的地址?可字符串的内容不就是字符串的地址吗?

#include <stdio.h>
#include <string.h>
int main()
{
    char p[2][100]={"hello","world"};
    char *q[2];
    q[0]=p[0];
    q[1]=p[1];
    char *temp;

    temp=q[0];
    q[0]=q[1];
    q[1]=temp;

    /*
    strcpy(temp,q[0]);
    strcpy(q[0],q[1]);
    strcpy(q[1],temp);
    */
    printf("%s ",q[0]);
    printf("%s ",q[1]);
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • JRneymar JRneymar 2年前

    因为strcpy是将一个存储器块的内容复制到另一块上,这里的temp只是被定义为一个指针,但是并没有为其分配内存,所以使用strcpy会出错。
    可以先使用malloc为temp申请一块一定大小的内存,然后在使用strcpy交换

    点赞 评论 复制链接分享
  • weixin_44401509 wusherrysherry 2年前
    strcpy(temp,q[0]); 将q[0]的字符串复制到q[0]
    strcpy(q[0],q[1]); 将q[1]的字符串复制到q[0]
    strcpy(q[1],temp); 将q[0]的字符串复制到q[1]
    
    点赞 评论 复制链接分享

相关推荐