比如我的文件是:
{
周围交通: 距西单商业区仅0.5公里,由此至天安门不过三分钟车程,紧靠宣武门地铁站
交通位置: 二环以内
绿化/容积率: 绿化率30.00% 容积率8.100
占地面积:800平方米 建筑面积:6500平方米
车位: 出租地上150元/月,地下500元/月
热水: 24小时
暖气: 中央空调
}现在要将:后面的文字写到另外一个文件中,请问该怎么做?结果文件
{
距西单商业区仅0.5公里,由此至天安门不过三分钟车程,紧靠宣武门地铁站
二环以内
绿化率30.00% 容积率8.100
出租地上150元/月,地下500元/月
24小时
中央空调
}
{
周围交通: 距西单商业区仅0.5公里,由此至天安门不过三分钟车程,紧靠宣武门地铁站
交通位置: 二环以内
绿化/容积率: 绿化率30.00% 容积率8.100
占地面积:800平方米 建筑面积:6500平方米
车位: 出租地上150元/月,地下500元/月
热水: 24小时
暖气: 中央空调
}现在要将:后面的文字写到另外一个文件中,请问该怎么做?结果文件
{
距西单商业区仅0.5公里,由此至天安门不过三分钟车程,紧靠宣武门地铁站
二环以内
绿化率30.00% 容积率8.100
出租地上150元/月,地下500元/月
24小时
中央空调
}
也是用CStdioFile逐行读取入CString变量,直接把字符串格式化输出就可以
///////////////////////////////////
//功能:从配置文件中读取指定字段值
//参数:const char *ItemFile 配置文件名
// const char *ItemName 条目名称
// char *ItemValue 返回条目值
// int ItemBufLen 缓冲区长度
//返回值:成功返回0,文件错误返回-1,条目不存在返回-2
///////////////////////////////////
int ReadItem(const char *ItemFile, const char *ItemName, char *ItemValue, int ItemBufLen)
{
int i,j,m=0;
FILE *ReadFile; //句柄
char fp[200]; // 读出文件
unsigned long FileLength;
int NameLength;
ItemValue[0]=0;
if( (ReadFile=fopen(ItemFile,"r+")) ==NULL ) //打开文件
{ //printf("open file fail!");
return -1;
}
FileLength=strlen(ItemFile);
NameLength=strlen(ItemName);
setlock( fileno(ReadFile), F_WRLCK);
while(!feof(ReadFile)) //检测整个文件
{
fgets(fp,200,ReadFile);
for(j=0;j<strlen(fp) && fp[j]!='=';j++) ;
for(j;fp[j-1]==' ';j--) ;
if(j<NameLength) j=NameLength;
if(memcmp(fp,ItemName,j)==0) //找到指定的字段
{
for(i=0;i<strlen(fp) && (fp[i]!='=');i++)
;
i++;
for(i;(fp[i]!='\0') && (fp[i]!='\x0d') && (fp[i]!='\x0a') && (m<=ItemBufLen); i++)
if(fp[i]!=' ')
ItemValue[m++]=fp[i]; //读取指定字段的值
ItemValue[m]=0;
setlock( fileno(ReadFile), F_UNLCK);
fclose(ReadFile);
return 0;
}
}
setlock( fileno(ReadFile), F_UNLCK);
fclose(ReadFile);
return -2;
}
我读取的类似windows的ini格式, 西单=前门西做地铁
条目名称 条目脂
你把 “= ”换成 ”:“读出后 在写一个文件
{
char tokenstring[] = "周围交通: 距西单商业区仅0.5公里,由此至天安门不过三分钟车程,紧靠宣武门地铁站 ";
char szSection[MAX_PATH] = "", szValue[MAX_PATH] = "";
int result = sscanf(tokenstring, "%[^':']:%s", szSection, szValue); TRACE("%s\n%s\n", szSection, szValue);
}