str="20031006 20:15:06 成功登录服务器 正确"
sccanf(str,"%d %s %s %s",&lDate,str1,str2,str3);
想要得到:
lDate=20031006
str1="20:15:06"
str2="成功登录服务器"
str3="正确";
可是结果为
lDate=20031006
str1-3显示一样的字符,记得是:"20:15:06"
应该怎么才能得到我要的
sccanf(str,"%d %s %s %s",&lDate,str1,str2,str3);
想要得到:
lDate=20031006
str1="20:15:06"
str2="成功登录服务器"
str3="正确";
可是结果为
lDate=20031006
str1-3显示一样的字符,记得是:"20:15:06"
应该怎么才能得到我要的
变成逗号就可以了。
char str[]="20031006 20:15:06 , 成功登录服务器 , 正确";
sscanf(str,"%d %s , %s , %s",&lDate,str1,str2,str3);
using namespace std;void main()
{
char str[]="20031006 20:15:06 成功登录服务器 正确";
long date=0;
char str2[20]="",str3[20]="",str4[20]="";
sscanf(str,"%ld %s %s %s",&date,str2,str3,str4);
cout<<date<<endl<<str2<<endl<<str3<<endl<<str4<<endl;
getchar();
}
char str1[100];
char str2[100];
char str3[100];
int iDate;
sscanf(pstr,"%d %s %s %s",&iDate,str1,str2,str3);直接可以得到需要.你是不是分配了str1, str2, str3一样的内存了.
搞得我花了好久写了另一个程序
// scanf.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include <stdio.h>
#include <string.h>
bool readstr(char * src, char *str)
{
if ( EOF != sscanf( src, "%s", str))
return true;
return false;
}
int main(int argc, char* argv[])
{
//long lDate;
char str[20] = "";
char string[]="20031006 20:15:06 成功登录服务器 正确";
char *tmp;
tmp = string;
while (readstr(tmp, str))
{
printf("%s\n",str);
while ( tmp[0] == ' ' )
tmp++;
tmp = strpbrk( tmp, " " );
if (!tmp)
break;
} return 0;
}
const int MAX_LINE_LENGTH = 200;//一行最多字符数
const int MAX_LINES = 1000;//最多行数CStdioFile fr;
CString strBuffer;
char a[MAX_LINES][MAX_VALUE_LENGTH]
,b[MAX_LINES][MAX_VALUE_LENGTH]
,c[MAX_LINES][MAX_VALUE_LENGTH];int line=0;
if(fr.Open("a.txt",CFile::modeRead))
{
while(fr.ReadString(strBuffer))
{
sscanf(strBuffer.GetBuffer(MAX_LINE_LENGTH),"%[^,],%[^,],%[^,]", &a[line],&b[line],&c[line]);
strBuffer.ReleaseBuffer();
TRACE3("%s,%s,%s\n",a[line],b[line],c[line]);
line++;
}
fr.Close();
}
else
fr.Abort();