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语言灵活多变。。
这个问题以前我问过。
相关问答:
写了个测试程序如下
struct hostent *hp;
char AlarmDevIP[20];
int x2;
hp = gethostbyname("www.google.com");
if (hp)
{
......
如题,C/C++中的execl怎么调用写好的java程序,
execl("/opt/java1.5/bin/java","MyClass",NULL);
这样的不行哦。
不会.
运行java程序
找工具查看一下那个程序的命令行
搜索下:jni ......
有一10*10矩阵,除去第一个点(0,0)和最后一点(9,9),还有八个点为1,其他都为0,要求用二维数组表示。八个点是随机生成的,编写相关程序表示矩阵所有可能情况。
真心求教各位高手,哎!本人太菜了!呵呵!
......
如何将一个ListBox中的数据存在数据库中的一个字段下面,并且每条记录的字符串个数不一定 以及如何从数据库中读取该ListBox中的所有记录
C/C++ code:
//存入数据库
void __fastcall TForm1::Button5Click(TO ......