关于sprintf和strncpy函数的对比和疑问
#include "string.h"
#include "iostream.h"
#include <stdio.h>
void main()
{
char a[6]={'A','B','C','D','E','F'};
char buf[64]={'0'};
int b;
b=sprintf(buf,"%s",a);//1输出结果“A00R00烫?.”有乱码 而且b=11
//如果用 strncpy(buf,a,6); //2输出结果“ABCDEF”结果正确
cout<<buf<<endl;
cout<<b<<endl;
}
为什么用2就可以得到想要的结果,而用1就出现了乱码。sprintf不就是把字串格式化了吗?
昨天写程序的时候偶然遇到的问题,也想借此搞明白。