• 关于

    strcat

    的搜索结果

回答

#include "stdafx.h" #include "string.h" int _tmain(int argc, _TCHAR* argv[]) { char buf1[] = "hello"; char buf2[] = "world"; char buf3[] = ""; strcat(buf3,buf1); strcat(buf3,buf2); printf("%s",buf3); getchar(); return 0; } 用strcat 拼接,VS2012编译,输入出拼接后字符串helloworld

a123456678 2019-12-02 02:00:10 0 浏览量 回答数 0

回答

strcat_schar szBuf[3] = {0};strcat_s(szBuf, 3, "kdfdfj"); // 第一种连接字符串方法strcat(szBuf, "kdfdfj"); // 第二种连接字符串方法对于这两个例句,你仔细看就会发现他们有缓冲区溢出的问题.而用第一个函数则不同,它会抛出一个异常。但使用第二个函数的结果则不能确定,因为它可能会错误地改变了程序中其他部分的内存的数据,有可能不会抛出异常,但会导致程序数据错误,也可能由于非法内存访问抛出异常

一生有你llx 2019-12-02 02:33:13 0 浏览量 回答数 0

问题

请教 strcat应用的

杨冬芳 2019-12-01 19:32:51 1007 浏览量 回答数 2

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

回答

必须提一提 strcat 函数了。 include char strcat( char str1, const char *str2 );功能:函数将字符串str2 连接到str1的末端,并返回指针str1str1 和 str2 不能 overlap,同时,必须保证 str1 有足够的空间

calm86104 2019-12-02 02:33:12 0 浏览量 回答数 0

问题

为什么strcat实现不引起分段错误?

kun坤 2019-12-01 22:06:45 47 浏览量 回答数 1

问题

编写一段C++程序,利用strcpy和strcat

a123456678 2019-12-01 20:09:42 890 浏览量 回答数 1

回答

用同样的代码复现了一下: 参考一个问答:https://zhidao.baidu.com/question/390378147814693085.html语句 a = "aaa"; 是将a指向了 只读数据段的“aaa”,因为是只读数据段,所以不允许被修改,而 strcat()函数的原型是:char strcat ( char destination, const char * source ); 参数destination不是一个只读的数据,是会被改变的,换句话讲,如果这里的strcat操作成功,那么只读数据段内容就会被修改,这显然是不合理的,所以这里会报错。我实验了以下内容替代main()函数的前两句:其中不可行的有:1, char *a = (char *)malloc(10 * sizeof(char)); a = "aaa"; 2, char *a = "aaa"; 3, char *a; a = "aaa"; 其中可行的有:1, char *a = (char *)malloc(10 * sizeof(char)); strcpy(a,"aaa"); 2, char a[] = "aaa"; 3, char a[200] = "aa"; 这种问题在不能很好理解内存分配的时候确实很难想明白。因为编译的时候还没有进行分配,不会报错。

大锴 2019-12-02 02:26:07 0 浏览量 回答数 0

回答

strcatstrcat_schar szBuf[3] = {0};strcat_s(szBuf, 3, "kdfdfj"); // 第一种连接字符串方法strcat(szBuf, "kdfdfj"); // 第二种连接字符串方法对于这两个例句,你仔细看就会发现他们有缓冲区溢出的问题.而用第一个函数则不同,它会抛出一个异常。但使用第二个函数的结果则不能确定,因为它可能会错误地改变了程序中其他部分的内存的数据,有可能不会抛出异常,但会导致程序数据错误,也可能由于非法内存访问抛出异常

xumaojun 2019-12-02 02:33:13 0 浏览量 回答数 0

回答

strcatstrcat_schar szBuf[3] = {0};strcat_s(szBuf, 3, "kdfdfj"); // 第一种连接字符串方法strcat(szBuf, "kdfdfj"); // 第二种连接字符串方法对于这两个例句,你仔细看就会发现他们有缓冲区溢出的问题.而用第一个函数则不同,它会抛出一个异常。但使用第二个函数的结果则不能确定,因为它可能会错误地改变了程序中其他部分的内存的数据,有可能不会抛出异常,但会导致程序数据错误,也可能由于非法内存访问抛出异常

nothingfinal 2019-12-02 02:33:13 0 浏览量 回答数 0

问题

如何清空char数组?

保持可爱mmm 2020-02-08 20:36:30 1 浏览量 回答数 1

问题

关于语句while (*s++ != '\0')的疑问

a123456678 2019-12-01 19:50:54 826 浏览量 回答数 1

回答

strcat(p, p1)

杨冬芳 2019-12-02 02:26:10 0 浏览量 回答数 0

回答

strcat 或者 手动memcpy到新的buffer

游客x4uu57rrcwjuo 2020-03-17 17:00:52 0 浏览量 回答数 0

回答

这是未定义的行为。什么都可能发生。 第一个程序起作用的真正实际原因是因为第一个程序中的字符串存储在堆栈中。它会覆盖堆栈,这会导致未定义的行为,但不幸的是“工作正常”。 第二个程序不起作用,因为字符串存储在只读存储器中。尝试写入这些字符串将导致未定义的行为(或段错误)。 您的实现strcat是有效的,您只需要为要附加到的字符串分配足够的空间。 因此,回顾一下: 如何将内容中的内容写入到初始化时不要求的存储中所t指向的位置?sx 不是。这是仅发生在“工作”上的不确定行为。 #https://stackoverflow.com/questions/59091906/why-doesnt-the-strcat-implementation-cause-a-segmentation-fault

kun坤 2019-12-02 03:23:50 0 浏览量 回答数 0

回答

1.strcpy/stncpy2.memcpy3.strcat/strncat

杨冬芳 2019-12-02 02:23:11 0 浏览量 回答数 0

回答

char buffer[MAX_PATH]; getcwd(buffer, MAX_PATH); strcat(buffer, 你的相对路径); printf("%s", buffer); GetModuleFileName()得到当前执行文件的绝对路径,然后自己拼装即可。

a123456678 2019-12-02 02:01:49 0 浏览量 回答数 0

回答

#include <stdio.h> #include <string.h> int main () { char *a=(char *)malloc(80*sizeof(char)); char *b="bbb"; strcpy (a,"aaa "); strcat (a,b); puts (a); return 0; }

蛮大人123 2019-12-02 02:26:06 0 浏览量 回答数 0

问题

【求助】SOCKET编程,网络编程

a123456678 2019-12-01 20:28:47 836 浏览量 回答数 1

问题

system()函数为什么在这里会出错呢?望大神指点

a123456678 2019-12-01 20:06:47 1156 浏览量 回答数 0

问题

linux c编程,用进程池实现shell命令cp

云栖技术 2019-12-01 19:41:26 1528 浏览量 回答数 0

问题

求救高手。。linux c编程,用进程池实现shell命令cp

a123456678 2019-12-01 20:26:45 1326 浏览量 回答数 1

回答

char receive = NULL; char *new_point = NULL; //零时指针 int temp = 0, temp1 = 0; receive = (char)malloc(5); //开辟临时大小 memset(receive,0,5); //初始化 while(temp = recv(c,recvBuf,1000,0)) //循环接收 到结束返回零 { if(temp != SOCKET_ERROR) //网络阻塞返回-1 不执行 { temp1 += temp; new_point = (char*)realloc(receive,temp1+2); //开辟适应此次加以前接收过的所有字符的空间大小(temp+2) if(new_point == NULL) //开辟失败进入错误流程 { printf("no have enough memory.\n"); free(receive); return 0; } receive = new_point; strcat(receive,recvBuf); memset(recvBuf,0,sizeof(receive));//清空接收缓冲区,以便进行下一次接收 puts(receive); } memset(recvBuf,0,sizeof(recvBuf)); }

a123456678 2019-12-02 02:16:27 0 浏览量 回答数 0

问题

不用strcat函数,实现字符串的连接,如把字符串1连接到字符串2的尾部

a123456678 2019-12-01 20:11:11 1082 浏览量 回答数 1

问题

while(*s++); 和 while(*s)s++; 的区别?

a123456678 2019-12-01 19:43:14 1040 浏览量 回答数 1

回答

md5函数都支持分段计算,只要你分割的文件不添加额外的文件内容,计算出来的就和未分割之前的是一致的。 #include<stdio.h> #include<openssl/md5.h> #include<string.h> int main( int argc, char **argv ) { MD5_CTX ctx; unsigned char *data="123"; unsigned char md[16]; char buf[33]={'\0'}; char tmp[3]={'\0'}; int i; MD5_Init(&ctx); MD5_Update(&ctx,data,strlen(data));//多次调用这个函数就可以了,你可以每次update 1kB的数据 MD5_Final(md,&ctx);//所有的文件都处理完了,调用这个函数就行了 for( i=0; i<16; i++ ){ sprintf(tmp,"%02X",md[i]); strcat(buf,tmp); } printf("%s\n",buf); return 0; }

蛮大人123 2019-12-02 01:58:59 0 浏览量 回答数 0

回答

md5函数都支持分段计算,只要你分割的文件不添加额外的文件内容,计算出来的就和未分割之前的是一致的。 #include<stdio.h> #include<openssl/md5.h> #include<string.h> int main( int argc, char **argv ) { MD5_CTX ctx; unsigned char *data="123"; unsigned char md[16]; char buf[33]={'\0'}; char tmp[3]={'\0'}; int i; MD5_Init(&ctx); MD5_Update(&ctx,data,strlen(data));//多次调用这个函数就可以了,你可以每次update 1kB的数据 MD5_Final(md,&ctx);//所有的文件都处理完了,调用这个函数就行了 for( i=0; i<16; i++ ){ sprintf(tmp,"%02X",md[i]); strcat(buf,tmp); } printf("%s\n",buf); return 0; }

a123456678 2019-12-02 02:41:25 0 浏览量 回答数 0

回答

//c语言多线程调python,必须加上红色字体,因为python本身不是线程安全的 PyObject* callPython(char* cpModelPath) { if(cpModelPath == NULL) return NULL; char modelPath[100] = ""; char modelName[21] = ""; int i; char* cp = cpModelPath; int len = strlen(cp); int len1 = len; if(len <= 0) { printf( "model is null, pid [%u] exit\n", (unsigned int)getpid() ); return; } while( *(cp + len - 1) != '/') { len--; } for(i = 0; i < len; ++i) modelPath[i] = *(cp+i); for(i = 0; i < len1-len; ++i) modelName[i] = *(cp+i+len); char modelPath1[100] = ""; strcpy(modelPath1, "sys.path.append('"); strcat(modelPath1, modelPath); strcat(modelPath1, "')"); PyRun_SimpleString("import sys"); PyRun_SimpleString(modelPath1); PyObject* pModule = NULL; PyObject* pDict = NULL; PyObject* pClass = NULL; PyObject* pObject = NULL; PyObject* pFunc = NULL; //调用python中的类 pModule = PyImport_ImportModule(modelName); if(!pModule) { printf( "model PyImport_ImportModule fail, pid [%u] thread [%u] exit\n", (unsigned int)getpid(), (unsigned int)pthread_self() ); return; } pDict = PyModule_GetDict(pModule); if(!pDict) { printf( "model PyModule_GetDict fail, pid [%u] thread [%u] exit\n", (unsigned int)getpid(), (unsigned int)pthread_self() ); return; } pClass = PyObject_GetAttrString(pModule, "JobNode");//得到那个类 if(!pClass || !PyCallable_Check(pClass)) { printf( "model PyObject_GetAttrString class fail, pid [%u] thread [%u] exit\n", (unsigned int)getpid(), (unsigned int)pthread_self() ); return; } pObject = PyEval_CallObject(pClass, NULL);//生成一个对象,或者叫作实例 pFunc = PyObject_GetAttrString(pObject, "createApp");//得到该实例的成员函数 if(!pFunc || !PyCallable_Check(pFunc)) { printf( "model PyObject_GetAttrString func fail, pid [%u] thread [%u] exit\n", (unsigned int)getpid(), (unsigned int)pthread_self() ); return; } Py_DECREF(pObject); Py_DECREF(pClass); Py_DECREF(pDict); Py_DECREF(pModule); return pFunc; } void* func(void* arg) { PyGILState_STATE gstate; gstate = PyGILState_Ensure(); PyObject* pFunc = NULL; PyObject* pArg = NULL; PyObject* pString = NULL; char* cpReturn; PyObject* p = callPython("/mnt/hgfs/D/emar_test/linux-test/marmoset/JobNode"); pFunc = p; pArg = PyTuple_New(1); // s 表示字符串, // i 表示整型变量, // f 表示浮点数, // O 表示一个Python对象。 PyTuple_SetItem(pArg, 0, Py_BuildValue("s", "Jacky")); pString = PyEval_CallObject(pFunc, pArg);//执行该实例的成员函数 cpReturn = PyString_AsString(pString); printf("cpReturn=%s\n",cpReturn); Py_DECREF(pString); Py_DECREF(pArg); Py_DECREF(pFunc); PyGILState_Release(gstate); } void main() { int num = 1; Py_Initialize(); if(!Py_IsInitialized()) { return; } PyEval_InitThreads(); PyEval_ReleaseThread(PyThreadState_Get()); pthread_t pid1,pid2; pthread_create(&pid1, NULL, func, NULL); pthread_create(&pid2, NULL, func, NULL); pthread_join(pid1, NULL); pthread_join(pid2, NULL); PyGILState_Ensure(); Py_Finalize();*/ }

a123456678 2019-12-02 02:45:10 0 浏览量 回答数 0

问题

C++str类函数问题,求解!

a123456678 2019-12-01 20:11:02 751 浏览量 回答数 1

回答

先说说这几个例子的区别吧:1、 include string url = “segmentfault.com”;url是一个string对象。为了更加容易地操纵字符串,cpp为我们定义了一个string类(string并不是cpp的关键字),你可以通过它来定义字符串对象,然后通过调用它的方法来获取该字符串的信息,例如获取它的长度:url.length()又或者对它进行操纵,例如拼接: string scheme = “http://”cout << scheme+url << endl; //输出http://segmentfault2、下面的三种写法都可以看作是一种: const char* url = “segmentfault”;因为 const char url[](字符数组),数组名url在编译时会被隐式转为为指针char,指向字符串的首个字符's'。至于号的位置,有人喜欢把它放到靠近类型,有人喜欢把它放到靠近变量名,这里有一个关于这个问题讨论的topic http://topic.csdn.net/u/20101117/10/f... 又因为是常量字符串,所以你不能对它进行修改 url[0]='x';//错误,不可以进行修改,就算没有用const来修饰,也不可以但是在string中却可以 string url = “segmentfault.com”;url[0] = 'x';//OK这是因为string为我们承担了管理内存的任务。如果你想要对它进行拼接,你需要自己写一个函数,又或者调用cstring库中的strcat或strncat函数。 在c/cpp中,有两种作用,一种是用来定义指针类型,char 就是字符指针。另外一种就是取值,取指针指向的值,想上面所说的 const char *url = “segmentfault”;url是指向字符串的首个字符,所以你对指针url取值,得到的就是字符's' cout << *url << endl;//输出's'所以,总的来说,string用起来会比较方便,常量字符串在操纵起来就有点麻烦,也可以说是灵活吧,什么时候用哪个,就需要你自己衡量了。至于性能上,我想我还没有能力来分析!

a123456678 2019-12-02 02:02:22 0 浏览量 回答数 0

问题

运行报错,,在网上一搜,说是最后没有打空格,在最后也敲了空格了,怎么又报错了,求指点??报错

爱吃鱼的程序员 2020-06-14 21:57:14 0 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站