将长度为len的key对应的字符串value从src中截取出来

#include <stdio.h>
#define U8 unsigned char
#define U16 unsigned short
/*
功能:将长度为len的key对应的字符串value从src中截取出来

MaxSize		value前面字符的最大个数,包括=
src			原字符串,key=value,例如从文件中读取过来的数据
key			属性名称
len			key的长度
value		存储得到的结果

1. 排除key前面的字符,从key开始算起,例如" abckey=value"
2. MaxSize是value前面字符的最大个数,包括=
3. value没有空格
*/
U8 GetStr(U16 MaxSize,char* src ,char* key ,U8 len, char* value)
{
	U16 i,j;
	U8 getFlag;
	U16 getAddr;
	char tempStr[200];
	for(i=0;i<MaxSize-len;i++)
	{
		getFlag=1;

		for(j=0;j<len;j++)
		{
			if(src[i+j]!=key[j])
			{
				getFlag=0;
				break;
			}
		}

		if(getFlag==1)
		{
			getAddr=i;
			break;
		}
	}
	
	if(getFlag==1)
	{
		sprintf(tempStr,"%s=%%s",key);// key=%s
		sscanf(src+getAddr,tempStr,value);
	}
	return(getFlag);
}

int main()
{
	char *src=" 1 2 abcd=12345 123";
	char *key="abcd";
	char val[200];

	if(GetStr(10, src, "abcd", 4, val)==1)
	{
		printf("得到%s值为:%s\n", key, val);
	}
	
	return 0;
}

另外编译器原因,VS2010编译C程序时,要求变量声明在执行语句的前面,否者会报

error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

error C2065: “tempStr”: 未声明的标识符

编译器对变量声明的规定

C89在块(花括号)的开头声明所有局部变量,不是非要在函数开头。

C99以及C++中局部变量则没有这个限制,可在任何位置声明变量,只需放在使用之前的位置

据说,微软主要的方向是对C++的编译器提供新特性的支持(对C++11做了许多支持),而不是C编译器。

用7-Zip打开VS目录下的cl.exe,有一个version.txt打开内容如下:

FILEVERSION    16,0,30319,1
PRODUCTVERSION 10,0,30319,1
FILEFLAGSMASK  0x3F
FILEFLAGS      0x0
FILEOS         VOS_UNKNOWN | VOS__WINDOWS32
FILETYPE       VFT_APP
FILESUBTYPE    0x0
{
  BLOCK "StringFileInfo"
  {
    BLOCK "040904B0"
    {
      VALUE "CompanyName",       "Microsoft Corporation"
      VALUE "FileDescription",   "Microsoft® C/C++ Compiler Driver"
      VALUE "FileVersion",       "16.00.30319.01 built by: RTMRel"
      VALUE "InternalName",      "CL.EXE"
      VALUE "LegalCopyright",    "© Microsoft Corporation.  All rights reserved."
      VALUE "OriginalFilename",  "CL.EXE"
      VALUE "ProductName",       "Microsoft® Visual Studio® 2010"
      VALUE "ProductVersion",    "10.00.30319.01"
    }
  }
  BLOCK "VarFileInfo"
  {
    VALUE "Translation", 0x409, 1200
  }
}


这就是微软的封闭编译器吧。

猜你喜欢

转载自blog.csdn.net/huanghxyz/article/details/84617487
今日推荐