读取的字符串为csTemp = "SX020,三星-F619,6,,,1,2080,刷卡,,,,5,"
我想把第二个“,”第六个“,”和第九个“,”之前的字符段分别读到csName,csKongji,csBucha里面,如果没有则字符串为空
我用
sscanf(csTemp,"%*[^,],%[^,],%*[^,],%*[^,],%*[^,],%[^,],%*[^,],%*[^,],%[^,],%*s",csName,csKongji,csBucha);
调试发现csName,csKongji,csBucha三个字符串的都是“三星-F619”。csName,csKongji,csBucha,csTemp全部为CString变量。我将sName,csKongji,csBucha 换为 char [20] 结果相同。不知道什么原因,请指教。
我想把第二个“,”第六个“,”和第九个“,”之前的字符段分别读到csName,csKongji,csBucha里面,如果没有则字符串为空
我用
sscanf(csTemp,"%*[^,],%[^,],%*[^,],%*[^,],%*[^,],%[^,],%*[^,],%*[^,],%[^,],%*s",csName,csKongji,csBucha);
调试发现csName,csKongji,csBucha三个字符串的都是“三星-F619”。csName,csKongji,csBucha,csTemp全部为CString变量。我将sName,csKongji,csBucha 换为 char [20] 结果相同。不知道什么原因,请指教。
解决方案 »
- DOM使用指定的Schema文件验证指定的XML为什么始终过不去呢?用XMLSpy就可以过去.急呀!!!!!!!!!!!!!!!!!!
- 为什么显示出来的图像与顶部边框总有一段较远的距离
- 给错分了,补分
- 我下了一个英文版的InstallShield,但不大会用,哪位有这方面的电子书或是下载网址之类的/能提供给我吗/谢谢
- 用MFC写的程序采用ADO与ACCESS 在2000 下正常使用,但是在98下无法正常使用
- 怎么求以2为底的log?
- 急,哪有VC6下?
- 请问.emc格式的文件是什么文件?刚才在机子上发现了一个病毒,描述为w32.nimda.emc
- 大侠们帮忙呀!!!ADO 和SELECT语句
- 怎样获取当前程序所在的路径。
- MFC高手请进
- 一段代码不懂-_-
csName = "SX020"
csKongji = "三星-F619"
csBucha = "6,,,1,2080,刷卡,,,,5"
csName = "三星-F619"
csKongji = "1"(第六个","前的数值)
csBucha = ""(第九个","前的数值,因为这一行没有,所以为空)
Text1,Text2,Text3,Text4,...TextN,
其中Text(n)可为空?
然后读取Text(n)的值?
sscanf(pcstr, "%*[^,],"%s","%s",.....);
当你用%*[^,],来读取的时候
_T("")无法得到
也就是说,,,这种不会被认为是
_T(""),_T(""),_T(""),
建议你采用CString::Find的方法,可以得出,的个数正确
int nStart = 0;
int nFind = 0;
int nCount = 0;
while(nFind != -1)
{
nStart = nFind+1;
nFind = csTemp.Find(_T(","),nStart);
nCount ++;
}
在这里做一下处理吧~
int iFind = 0;
int iCount = 0;
int iFindNext = csTemp.Find(",",iStart);
while(iFindNext != -1)
{
iFind = iFindNext;
iStart = iFind + 1;
iFindNext = csTemp.Find(",",iStart);
iCount ++;
switch(iCount)
{
case 1:
csName = csTemp.Left(iFindNext).Right(iFindNext-iFind-1);
break;
case 5:
csKongji = csTemp.Left(iFindNext).Right(iFindNext-iFind-1);
break;
case 8:
csBucha = csTemp.Left(iFindNext).Right(iFindNext-iFind-1);
break;
}
}