易截截图软件、单文件、免安装、纯绿色、仅160KB

c字符串 - C/C++ / C语言

C/C++ code:



#include "stdio.h"
int main(void)
{
char s1[] ="hello";
char s2[] = "wor";
strcpy(s1+strlen(s1),s2);
puts(s1);
return 0;
}




结果为 hellowor

我想问下strcpy 第一个参数 s1+strlen(s1)是什么东西, 弄不明白是怎么实现的
这个不行吧!
char s1[] ="hello";
 char s2[] = "wor";
首先你定义的都是常量数组,不能copy的!
再就是即便是能copy 你 s1的长度也不够容纳 两个之和呀!

destination的地址。


strcpy(des,orign) 是从origi拷贝到des , 拷贝的长度是orgin的指针指向的地址到从这个地址开始找到的第一个\0。


s1这里变成里char*,s1+strlen(s1)就成了s1的字符串尾。




s1是字符串的首地址...
strlen(s1)是s1的长度.
所以就是将s2接在s1的后面了.


这样不会栈溢出?怪!

数组名s1其实是一指针,s1指向“hello”的"h",而strlen(sl)是返回“hello”的长度,
即strlen(s1)=5,故s1+strlen(s1)是指向“hello”中“o”的下一位置。
所以:strcpy(s1+strlen(s1),s2);只是将s2复制到“o”的后面。如此结果为"hellowor"。

LZ,可以得到你说的结果?

s1+strlen(s1)是地址啊。s1本来就是s1数组的初地址。再加上长度就是s1的末地址了、strcpy是复制函数。参数是指针。就是继续往后面复制s2的内容

C语言灵活多变。。


这个问题以前我问过。


相关问答:

linux环境下gethostbyname函数问题 - C/C++ / C语言

写了个测试程序如下
   
  struct hostent *hp; 
char AlarmDevIP[20];  
  int x2;

hp = gethostbyname("www.google.com");
if (hp)
{ ......

execl怎么调用java程序 - C/C++ / C语言

如题,C/C++中的execl怎么调用写好的java程序,
execl("/opt/java1.5/bin/java","MyClass",NULL);
这样的不行哦。

不会.

运行java程序
找工具查看一下那个程序的命令行

搜索下:jni ......

求教c/c++语言相关问题 - C/C++ / C语言

有一10*10矩阵,除去第一个点(0,0)和最后一点(9,9),还有八个点为1,其他都为0,要求用二维数组表示。八个点是随机生成的,编写相关程序表示矩阵所有可能情况。
真心求教各位高手,哎!本人太菜了!呵呵!
......

有关Access数据库存取的问题 - C++ Builder / 基础类

如何将一个ListBox中的数据存在数据库中的一个字段下面,并且每条记录的字符串个数不一定 以及如何从数据库中读取该ListBox中的所有记录
C/C++ code:

//存入数据库
void __fastcall TForm1::Button5Click(TO ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号