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
™我真⁶⁶⁶₆₆₆⁶⁶⁶ 好的好的,谢谢大佬
9 个月之前 回复
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]实现字符串交换,可哪里出问题?还请大佬解惑,谢谢您了!
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
实现C库函数strcpy
1 实现c库的函数strcpy原型声明:char* strcpy(char* dst, const char* src);普通版本的strcpy//strcpy 实现没有检查dst和src内存重叠问题 char* strcpy(char *dst, const char *src) //const约束,内容不可变 { assert((src != NULL) && (dst != NULL)
【C】库函数之strcpy
Copy string # include &amp;lt;string.h&amp;gt;  Copies the C string pointed by source into the array pointed by destination, including the terminating null character (and stopping at that point).  To avoid o...
C/C++ 库函数strcpy的使用问题
近来,在strcpy的使用中发现了一个很难想清楚的问题。鄙人水平不足,还请大佬们指点。rnrn**问题:** rnrn我想问一下为什么下面这串代码q[0]与q[1]的交换不能使用strcpy(下面注释掉的代码),q[0]和q[1]指向的不就是那两个字符串吗?难道是字符串的地址?可字符串的内容不就是字符串的地址吗?rn```rn#include rn#include rnint main()rnrn char p[2][100]="hello","world";rn char *q[2];rn q[0]=p[0];rn q[1]=p[1];rn char *temp;rnrn temp=q[0];rn q[0]=q[1];rn q[1]=temp;rnrn /*rn strcpy(temp,q[0]);rn strcpy(q[0],q[1]);rn strcpy(q[1],temp);rn */rn printf("%s ",q[0]);rn printf("%s ",q[1]);rnrnrn```
C语言strcpy()库函数的实现
C语言strcpy()库函数的实现 strcpy()是C语言对字符串处理的库函数中的一种; 参数类型为: char stra; const char strb; 函数为: char *strcpy(stra,strb); /*其中stra数组必须大于或等于strb数组,函数会把strb指向的字符串复制到str1中去,strb必须是终止符为'/0'的字符串指针
c库函数c库函数c库函数c库函数
c库函数c库函数c库函数c库函数c库函数c库函数c库函数c库函数c库函数c库函数c库函数c库函数
c库函数c库函数c库函数
c库函数c库函数c库函数c库函数c库函数c库函数
C语言库函数strcpy与memcpy函数比较
C语言中strcpy与memcpy函数是怎么实现的又有哪些区别呢?   我们先来看下字符串的存储,字符串一般是用字符数组的方式存储,问题来了,我们都知道字符串有一个结束符"\0",存储字符串的字符数组的长度是多少呢?我们来看个例子:char str[] = "123456"; 这里str是一个字符数组,它存放了一个字符串"123456",由于字符串还有一个结束符"\0",所以此数组的长度为7
用C语言模拟实现库函数strcpy
模拟实现库函数strcpy要实现库函数strcpy,我们应该首先要知道strcpy函数的作用。★strcpy(s1,s2),strcpy函数的意思是:把字符串s2拷贝到s1中,连同字符串结束标志也一同拷贝。如果s2=&quot;good&quot;,那么内存合适的s1中存放的是good\0。下面是strcpy在库函数的原型:那么现在怎么模拟实现一个strcpy函数呢?char *strcpy(char *dest, ...
C语言~模拟库函数Strlen,Strcpy, Strcmp.
1,strlen()函数的实现        strlen()函数功能是计算字符串中字符个数,而字符本身就是一个字符数组,只不过末尾以‘\0’结束。 int my_strlen(const char *str) //strlen函数模拟实现 { int count = 0; assert(str != NULL); //断言 wh
面向对象编程之C库函数 -- strcpy , memcpy , strdup 之区别
1.概述2.函数原型 char* strcpy(char* des,const char* source) void *memcpy(void *dest, const void *src, size_t n); extern char *strdup(char *s);
模拟实现C语言库函数strcpy
首先,我们来看一下MSDN中对strcpy的定义,函数参数,返回值 strcpy (定义)Copy a string. (函数的返回类型及参数)char *strcpy( char *strDestination, const char *strSource ); (返回值)Each of these functions returns the destination string. No...
模拟实现C库函数:strcpy和strcat
strcpy的作用是将一个字符串的内容复制到另外一个字符数组中,包括字符串的终结符'\0' #define _CRT_SECURE_NO_WARNINGS 0 #include #include #include char *my_strcpy(char *dest, const char *src) { assert(src != NULL); assert(dest != NULL
c语言模拟库函数strlen、strcpy、strcmp.
strlen()函数功能是计算字符串中字符个数,而字符本身就是一个字符数组,只不过末尾以‘\0’结束。 strcpy()函数是把从psrc地址开始且含有NULL结束符的字符串复制到以pdest开始的地址空间中。 strcmp(str1,str2)是用来比较两个字符串的,设这两个字符串为str1,str2,若str1=str2,则返回零;若str1< str2,则返回负数;若str1>str2,则返回正数。
找工作准备01 - c库函数strcpy与memcpy
strcpy和memcpy都是标准C库函数。 1. strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广; 2. strcpy只有两个参数,即遇到‘\0’结束复制,而memcpy是根据第三个参数来决定复制的长度。 strcpy (不考虑...
c库函数c语言库函数
c库函数 c库函数 c库函数 c库函数 有时间就看看 对于我们还是有点用的
C运行库函数使用问题
程序有两个模块,主模块中分配内存和释放,另一个模块中操作主模块中的内存,如strcpy_s,memcpy_s,memset等;如果主模块是MT编译出来的,另一个模块是MTD编译出来,两个模块使用不同的C运行库,这种情况下会不会有问题?
单片机编程使用C库函数
1.printf函数 这个非常简单。只要重定向printf函数即可。 这个是STM8L单片机代码,注意:如果是IAR编译器需要开启library-FULL 亲测在msp430,stm32,stm8l上均可使用,将1,2替换成对应单片机的函数即可 int fputc(int ch, FILE *f)//printf { USART_SendData8(USART1, (uint8_t) ...
c用库函数使用
C语言的常用库函数使用
C C++ 库函数的使用
头文件的作用以及函数的使用规则
c strcpy() 问题
#include rn#include rnrnvoid main()rnrn char *sendbuf;rn char *test = "daldjal";rnrn (void) strcpy(sendbuf, test);rnrn printf("%s",sendbuf);rnrnrn谁帮我看下这段程序哪有问题。谢谢!
一个strcpy库函数的问题
char arr1[15] = "0123456789abcde";rn char arr2[16] = "0123456789abcdef";rn arr1[15] = 0;rn arr2[16] = 0;rn strcpy(arr1,arr2);rn printf("arr1:%s,arr2:%s\n",arr1,arr2);rnrn 我特意让数组越界使用的,请问这段程序为什么会出现异常呢?
C语言库函数C语言库函数C语言库函数
C语言库函数:按各个字母开头的库函数都分开了的
C语言库函数 C语言库函数 C语言库函数
C语言库函数 C语言库函数 C语言库函数
C中的strcpy函数的使用
rn 请问各位高手假如定义:rnchar a[10]="china",b[3]="we";rnstrcpy(a,b)的结果是什么?rn是:"weina""还是:"we"?
C代码中strcpy的使用
最近在做一个项目,主要工作是将C代码编写的项目整理好业务逻辑,原班复制到java代码中。将程序中使用到的函数记录下,以备后用。 1.简单理解 将一个字符串中的数据,复制给另一个字符串。 2.深度理解 如strcpy(a,b),实时上是把b的字符串复制到a中的地址空间。 ...
c库函数和linux c
向学单片技术的人抓紧时间了啊,和不错哦。
c库函数(库函数大全)
c库函数.rarc库函数.rarc库函数.rarc库函数.rarc库函数.rarc库函数.rarc库函数.rar
C与C++库函数问题
C语言里怎么在VC里使用TC的文本和图形操作函数啊?rn如:rntextcolor(),clrscr(),setbkcolor()等函数。rn或者VC里的什么函数功能和TC里的这些函数类似。rn知道的帮帮忙啊!!
c/c++库函数的问题
rn中都有什么函数
c语言的库函数问题
system()这样的函数不知在哪个头文件里?我用的是tc2.0。不止哪位有很完整比较新的c库函数?rn还有一个傻“问题”:tc2.0能否利用vc/c++提供的api函数?
c语言库函数问题
我是大一新生,c语言书上介绍的库函数太少,哪可以找到所有库函数的用法以及经典的例子。还有c++的库函数及用法。望大虾们赐教。
C语言strcpy在类中的使用问题
创建了一个类,然后类中的私有成员全是char* 类型,然后类的构造函数是初始化这些成员,功能函数提供修改这些成员的功能.rnrn由于C语言的strcpy不经常使用,以前依赖于string,现在类中不能增加string的成员..现在在修改的时候遇到困难,比如要修改的char数组长度大于原来的char数组,应该不能直接strcpy的吧,应该怎么做才行?长度小于呢?rnrnPS:char*成员比如是一个姓名,然后要修改成另外一个姓名...rnrn谢谢各位大大帮我解答
C 语言库函数C 语言库函数
C 语言库函数C 语言库函数C 语言库函数
C语言标准库函数 C语言标准库函数
C语言标准库函数C语言标准库函数C语言标准库函数C语言标准库函数C语言标准库函数C语言标准库函数C语言标准库函数
C语言标准库函数C语言标准库函数
C语言标准库函数查询,中文版整理,希望大家喜欢。
C语言库函数C语言库函数
C语言库函数C语言库函数C语言库函数C语言库函数C语言库函数C语言库函数
C库函数
C库函数 2010年06月28日   rename()文件改名函数     原形:int rename(const char *oldname,const char *newname)     注意:如果newname中包含了一个驱动器指示符,它必须与oldname中给出的指示符相同。oldname和newname中的目录可以不同,因此rename函数把文件从一个目录移到另一个目录。...
C库函数手册 C库函数手册
C库函数手册,C库函数手册,C库函数手册。
c库函数
c库函数 使用fopen打开 hello.txt,返回值是文件结构体指针file *fp,这个结构体里面东西很多,但重要介绍三种 1.文件描述符: 对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开或者创建一个现有文件或创建一个新文件时,内核会向进程返回一个文件描述符。 内核中的PCB进程块,有一个文件描述符表,0(STDIN_FILENO),1(STDOU
C语言笔记系列(五)--字符输入输出和字符函数
字符串函数
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池