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个回答

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

qq_43540197
™我真⁶⁶⁶₆₆₆⁶⁶⁶ 好的好的,谢谢大佬
一年多之前 回复
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]
qq_43540197
™我真⁶⁶⁶₆₆₆⁶⁶⁶ 不应该是q[0]的字符串复制到temp吗?再把q[1]复制给q[0]。再把temp复制给q[1]实现字符串交换,可哪里出问题?还请大佬解惑,谢谢您了!
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问