怎么了?szname不对了?strncpy(szname,"testname",9); 这行有问题吧
解决方案 »
- 不知道具体问题,高手进来看下
- 用采集软件采集A站数据,过一段时间A站访问慢什么原因
- WinForm里WebBrowser加载网页后,如何判断加载失败的图片和访问过的链接?
- 新手请教C#线程问题
- 急,高手的进,C#中Word对象输出,要输出表格形式
- 请教Assembly和Stream类的作用和用法,有代码
- 想动态读出数据库中的数据,用按钮显示,求教!
- DataList 用法,请尽快回答,我的分数是60
- 一个简单的问题:如何判断一个undefined value的值??
- 新手发问!
- 求教函数 System.Text.Encoding.Default.GetBytes() 的问题,谢谢赐教!!!
- C#winfroms窗体问题!请高手指导下。。。。急啊!! 急死我啦!!!!!!!!!!!!!!
改成
strcpy(szname,"testname",strlen("testname"));
szname[strlen("testname")] = '\0';
再试试
……strcpy只能传2个参数吧直接strcpy(szname,"testname");就可以了,后面会自动加0x00.
或按这位仁兄的思路应该用memcpy
也不会有问题。
struct CTest
{
int nage;
char szname[128];
}
void SetTestData(CTest *pTest)
{
pTest->nage = 10;
strncpy(pTest->szname,"testname",9);
} C#
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential)]
public struct CTest
{
public int nage;
[MarshalAs(UnmanagedType.LPStr ,sizeset = 128)]
public string szname;
}
CTest ptest = new CTest();
SetTestData(ref ptest); 执行结果
ptest.nage = 10;
ptest.szmame = ""; // 这个值没有返回
期待解决,谢谢! 谢谢大家, 我问问题的关键是在定义一个结构体,结构体里有字符串,如何转入字符串,不应该是strcpy strncpy这类问题