如何使用逗號 (,) 作為分隔符 sscanf示例和fscanf示例
阿新 • • 發佈:2019-01-26
一、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中,將檔案操作轉化為記憶體操作,才能解析成功。