一、sscanf示例
/* The following sample illustrates the use of brackets and the caret (^) with sscanf(). Compile options needed: none */
#include #include #include
char *tokenstring = "first,25.5,second,15"; int result, i, rv; double fp; char o[10], f[10], s[10], t[10];
void main() { result = sscanf(tokenstring, "%[^','],%[^','],%[^','],%s", o, s, t, f); fp = atof(s); i = atoi(f); printf("%s\n %lf\n %s\n %d\n", o, fp, t, i); }
二、fscanf示例
/* The following sample illustrates the use of brackets and the caret (^) with sscanf(). Compile options needed: none */
#include #include #include
char *tokenstring = "first,25.5,second,15"; int result, i; double fp; char o[10], f[10], s[10], t[10];
FILE *filep; //文件的打开、关闭操作在此省略
void main() { rv = fscanf(filep, "%s", tokenstring);
result = sscanf(tokenstring, "%[^','],%[^','],%[^','],%s", o, s, t, f);
fp = atof(s); i = atoi(f); printf("%s\n %lf\n %s\n %d\n", o, fp, t, i);
} 如果你直接使用fscanf读取文件中存放的字符串"first,25.5,second,15", 即fscanf(fp, "%[^','],%[^','],%[^','],%s", o, s, t, f); 结果会失败,原因我还没有调查出来。
你必须先把文件中存放的字符串读入tokenstring中,将文件操作转化为内存操作,才能解析成功。 |