C/C++里面的字符串处理问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 11:11:10
#include<stdio.h>
#include<string.h>
#define pr(x) printf("%s\n",x)
int main()
char s1[]="1234567890",s2[]={0};
char *p1=s1,*p2=s2;
strncpy(s2,p1+2,5);
pr(s2);
...



#include<stdio.h>
#include<string.h>
#define pr(x) printf("%s\n",x)
int main()
char s2[]={0};
char *p1="1234567890",*p2=s2;
strncpy(s2,p1+2,5);
pr(s2);
...

输出的结果为什么会不同呢?

还有有没有erase,find,length,insert等函数,有的话,在那个库里?cstring?

你的 s2[] 大小为零,你用 strncpy 的时候 数组越界,我很奇怪你的编译器没报警。
如果没报警的话,输出的时候,估计是把s2 指向的后面未知部分给 print 出来了。
我运行的时候就提示出错。
你把 s2 的大小设置好,看看是不是一样了。

http://baike.baidu.com/view/1207711.htm
和内存中数据的储存形式有关,就是那个结束符,好好看看吧,对你有帮助的.
还是不懂的话,给我留言!