关于c风格字符串 - C/C++ / C++ 语言
看primer第115页,看到一个范例:
C/C++ code:
const char *cp1="A string example";
const char *cp2="A different string";
char largeStr[16+18+2];
strncpy(largeStr,cp1,17);
strncat(largeStr," ",2);
strncat(largeStr,cp2,19);
cout<<largeStr<<endl;
不太理解啊, *cp1里面是16和字符,*cp2里面是18个字符,为了容下结束符,"strn"函数第三个参数都加1,我怎么觉得,要是包括进来了结束符,最后largrStr字符串就会成了"A string example\0 A different string\0"
我觉得这样输出的时候就只显示原来cp1的内容就会遇到结束符了啊,但是经过实践,证明书中确实是正确的,如果第三个参数不加1,中间输出一些乱码,但是不理解,不知道我有没有说明白我的意思,谁能解释一下
呵呵,看看strncpy等的源代码吧
楼上的意思是?????没太明白啊,第三个参数不是说进行操作的字符个数吗?不知道楼上有没有明白我的意思
哦!楼上的说的有道理!!!!那要是没有\0的时候strncpy就一直往后找,知道找到\0的时候才继续写,所以中间就会输出乱码是吧,感谢楼上的!明白了。结贴了
第三个参数是你指定拷贝的字符串的长度,不一定是整个长度啊!!!
C/C++ code:
const char *cp1="A string example";
const char *cp2="A different string";
char largeStr[
相关问答:
写了个测试程序如下
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 ......
在根目录/lib中存放一个log.c,log.h,并用下面的语句:
gcc -c log.c
ar crv liblog.a log.o
编译出一个liblog.a静态库,然后在文件夹:/testfile中创建一个test.c和testc.c,test.c中引用了testc.c中定义的方法 ......
挺繁琐,之前发的帖子,分值太低现在重发一个。欢迎各位大侠~~
#include "stdlib.h"
#include "math.h"
#include "stdio.h"
float objfx(float x[]);
void constraint(float x[] ......