一、sscanf示例
/* The following sample illustrates the use of brackets and the
caret (^) with sscanf().
Compile options needed: none
*/
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
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 <math.h>
#include <stdio.h>
#include <stdlib.h>

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);
结果会失败,原因还没有调查出来。(貌似在php里可以,用法一样)

你必须先把文件中存放的字符串读入tokenstring中,将文件操作转化为内存操作,才能解析成功。


下面是网上的摘录:
  Definition and Usage
  定义和用法
  The fscanf() function parses the input from an open file according to the specified format.
  fscanf()函数的作用是:从文件中按照指定的格式输入。
  Syntax
  语法
  fscanf(file,format,mixed)
  Parameter参数Description描述
  fileRequired. Specifies the file to check
  必要参数。指定文件对象
  formatRequired. Specifies the format.
  必要参数。指定格式
  Possible format values:
  可用的格式值:
  %% - Returns a percent sign
  %% - 返回一个“%”
  %b - Binary number
  %b – 二进制数
  %c - The character according to the ASCII value
  %c – 某字符所对应的ASCII值
  %d - Signed decimal number
  %d – 包含正负号的十进制数(可包含正负数)
  %e - Scientific notation (e.g. 1.2e+2)
  %e – 科学技术符号(例如:1.2e+2)
  %u - Unsigned decimal number
  %u – 不包含正负号的十进制数
  %f - Floating-point number (local settings aware)
  %f – 浮点数字(本地属性)
  %F - Floating-point number (not local settings aware)
  %F – 浮点数字(非本地属性)
  %o - Octal number
  %o – 十进制数字
  %s - String
  %s – 字符串
  %x - Hexadecimal number (lowercase letters)
  %x – 十六进制数(小写字母)
  %X - Hexadecimal number (uppercase letters)
  %X – 十六进制数(大写字母)
  Additional format values. These are placed between the % and the letter (example %.2f):
  其它的文本格式值。它是位于%和字母之间的(如:%.2f):
  + (Forces both + and - in front of numbers. By default, only negative numbers are marked)
  +(在数字前面加上‘+’或‘-’来定义数字的正负性;默认情况下,正数不做标记)
  ' (Specifies what to use as padding. Default is space. Must be used together with the width specifier. Example: %'x20s (this uses "x" as padding)
  ’(指定使用旁白[padding]的类型。默认是空格space,它必须同时指定宽度,例如:%'x20s (这里使用 "x" 作为旁白[padding]) )
  - (Left-justifies the variable value)
  -(向左调整变量值)
  [0-9] (Specifies the minimum width held of to the variable value)
  [0-9](指定了变量值的最小宽度)
  .[0-9] (Specifies the number of decimal digits or maximum string length)
  .[0-9](指定了十位数字或最大字符串长度)
  Note: If multiple additional format values are used, they must be in the same order as above.
  注意:如果要使用多个上述的值,顺序必须按照上面的顺序,不能打乱。
  mixedOptional.
  可选参数
  Tips and Notes
  注意点
  Note: Any whitespace in the format string matches any whitespace in the input stream. This means that a tab (/t) in the format string can match a single space character in the input stream.
  注意:任何format的值中的空白部分[whitespace]与input内容相似;这意味着tab键(/t)[制表符]和input内容的一个单一的空格[space]相似。