一. 格式化输出
格式说明符的形式说明如下:
%[flags][width][.prec] type
- 类型符 type
表示输出数据的类型 - 宽度符 width
%12s
是输出12位的字符串,不足补空格
-
对齐符 flags
+
是右对齐, 默认缺省值
-
是左对齐,%-12lf
是指输出左对齐的12位浮点数, 不足12位,则空格补齐 -
精度符 prec
适用于浮点数的输出, 小数部分的位数,四舍五入
%12.2lf
输出小数位2位, 总长度为12位的浮点数
二.格式化输出到字符串
printf 是把结果输出到屏幕
sprintf 是把结果输出的内容保存字符串str中
snprintf 是把结果的前n-1个字符内容保存到字符串str中,不是n个
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
void main(){
char str[301];
memset(str, 0, sizeof(str));
sprintf(str, "%d, %c, %lf, %s\n",10, 'c',25.99, "一个输入了这几个内容");
printf("%s", str);
memset(str, 0, sizeof(str));
snprintf(str, 10, "==%d,%c,%lf,%s\n==",10, 'c',25.99, "一个输入了这几个内容");
printf("%s", str);
}
三. 解析xml函数
可以加入至库函数, 以下经编译运行OK
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
// 解析xml的函数
int GetXMLBuffer(const char *in_XMLBuffer, const char *in_FidldName, char *out_Value);
struct st_girl {
char name[51];
int age;
int weight;
};
// 将XML内容解析到结构体中
void GetXMLValue(const char *in_XMLBuffer, struct st_girl *pst);
void main(){
char strXMLBuffer[301];
struct st_girl stgirl;
memset(strXMLBuffer, 0, sizeof(strXMLBuffer));
strcpy(strXMLBuffer, "<name>张三</name><age>18</age>");
GetXMLValue(strXMLBuffer, &stgirl);
printf("=%s=%d=%d=\n", stgirl.name, stgirl.age, stgirl.weight);
}
// 这个函数可以加入库函数:
int GetXMLBuffer(const char *in_XMLBuffer, const char *in_FieldName, char *out_Value){
char sfieldname[51], efieldname[51];
memset(sfieldname, 0, sizeof(sfieldname));
memset(efieldname, 0, sizeof(efieldname));
sprintf(sfieldname, "<%s>", in_FieldName);
sprintf(efieldname, "</%s>", in_FieldName);
char *start, *end;
start=end=0;
start=strstr(in_XMLBuffer, sfieldname);
end=strstr(in_XMLBuffer, efieldname);
if ((start==0) ||(end==0)) return -1;
memset(out_Value, 0, sizeof(out_Value));
strncpy(out_Value, start+strlen(sfieldname), end-start-strlen(sfieldname));
return 1;
}
// 获取xml的值
void GetXMLValue(const char *in_XMLBuffer, struct st_girl *pst){
memset(pst, 0, sizeof(struct st_girl));
GetXMLBuffer(in_XMLBuffer, "name", pst->name);
char str[12];
memset(str, 0, sizeof(str));
GetXMLBuffer(in_XMLBuffer, "age", str);
pst->age=atoi(str);
memset(str, 0, sizeof(str));
GetXMLBuffer(in_XMLBuffer, "weight", str);
pst->weight=atoi(str);
}