70,023
社区成员




#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
p=s;
while (1) {
k=sscanf(p,"%d%n",&v,&n);
printf("k,v,n=%d,%d,%d\n",k,v,n);
if (1==k) {
p+=n;
} else if (0==k) {
printf("skip char[%c]\n",p[0]);
p++;
} else {//EOF==k
break;
}
}
printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.
long L;
sscanf("0xFFBC","%i",&L);
#include <ctype.h>
#include <stdio.h>
void catch(const char* value)
{
/* 根据所获取的字符串作相应的动作,这里举例进行简单的打印而已 */
printf("%s\n", value);
}
void analyze(const char* str)
{
char value[32];
char ch;
int i = 0;
while(ch = *str++)
{
if(ch == ',')
{
value[i] = '\0';
catch(value);
i = 0;
}
else if(isalpha(ch) || isdigit(ch))
{
value[i++] = ch;
}
}
value[i] = '\0';
catch(value);
}
int main(int argc, char* argv[])
{
analyze("5,10,str,0xFFBC");
analyze("5,10,100,200,0xFFBC");
return 0;
}
unsigned long convert(const char* pStr) // 将16进制字符串转换成无符号整形
{
unsigned long var=0;
unsigned long t;
int len = strlen(pStr);
if (len > 8) //最长8位
return -1;
char *strTemp = new char[len+1];
char *str = strTemp;
strncpy(str ,pStr ,len+1);
strupr(str);//统一大写
if (str[0] == '0' && str[1] == 'X')
{
str+=2;
}
for (; *str; str++)
{
if (*str>='A' && *str <='F')
t = *str-55;//a-f之间的ascii与对应数值相差55如'A'为65,65-55即为A
else
t = *str-48;
var<<=4;
var|=t;
}
delete []strTemp;
return var;
}
int main()
{
string str("5,100,123,0xFFBC");
size_t nPos = 0;
nPos = str.find(",");
int m = atoi(str.substr(0 ,nPos).c_str()); // 第一个数字
int n = atoi(str.substr(nPos+1 ,str.find("," ,nPos+1 ) - nPos-1).c_str()); // 第二个数字
nPos = str.find("," ,nPos+1);
if (str.substr(nPos+1 ,3) == "str")
{
// 是字符串"str" // 第三个是字符串"str"
}
else
{
int k = atoi(str.substr(nPos+1 ,str.find("," ,nPos+1 ) - nPos-1).c_str()); //第三个数字
}
nPos = str.find("," ,nPos+1);
int h = convert(str.substr(nPos+1 ).c_str() ); // 最后一个数字
return 0;
}
#include <stdio.h>
#include <iostream>
int num = 0;
char *save[30];
int fun(char, int);
int fun(char *a, int len)
{
char *p;
p = strtok(a,",");
if(!p)
return -1;
printf("%s\n",p);
save[num]=p;
num++;
while(p = strtok(NULL,",")) {
save[num]=p;
printf("%s\n",p);
num++;
}
return 1;
}
int main(void)
{
int ret;
int i = 0;
int j = 0;
int k = 0;
int integer[10];
char *char_num[10];
char a[100]="5,10,str,0xFFBC";
//char a[100]="5,10,100,200,0xFFBC";
ret = fun(a,100);
if(ret < 0) {
printf("数据不对\n");
}
printf("有%d个数据\n",num);
for(i = 0; i < num; i++){
if((ret = atoi(save[i]))!=0) {
integer[k++] = ret;
printf(" 是整数%d\n",integer[k-1]);
}
else {
char_num[j++]=save[i];
printf("是字符串%s\n",char_num[j-1]);
}
}
system("pause");
return 0;
}