1. 程式人生 > >如何使用逗號 (,) 作為分隔符 sscanf示例和fscanf示例

如何使用逗號 (,) 作為分隔符 sscanf示例和fscanf示例

一、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);
結果會失敗,原因我還沒有調查出來。

你必須先把檔案中存放的字串讀入tokenstring中,將檔案操作轉化為記憶體操作,才能解析成功。