fscanf函數

參考連接:http://blog.csdn.net/misskissc/article/details/25137335
原型:int fscanf(FILE *stream, char *format,[argument…]);返回值:整型,數值等於[argument…]的個數

FILE*fp;
char a[10];
int b;
double c;
fscanf(fp,"%s%d%lf",a,&b,&c)

例如文件data.txt內容如下
2,50,41,w,20.585828
4,52,51,r,52.012547
……
許多條類似的記錄,都是以,來分隔的
下面例子實現:是把上面文件中的數據的五個字段賦值給相應的五個變量,並且輸出這些變量的值。

#include<stdio.h>
#include<stdlib.h>
int main()
{
  int fd;
  long dev;
  long offset;
  long length;
  char ch;
  double ts=0.000000;
  if((fd=fopen("/home/haixian/ceshi/data.txt","r"))<0)
   {
     printf("open the file is error!\n");
     exit(0);
   }
  lseek(fd,0,SEEK_SET);
  while(5==fscanf(fd,"%ld,%ld,%ld,%c,%lf\n",&dev,&offset,&length,&ch,&ts))
  {在這裏就是第二個參數指定分隔參數的格式,在這裏使用的是,來分隔。這樣就很容易的獲取了記錄的各個字段的值並不需要自己編寫函數來進行解析什麼的。
     printf("%ld,%ld,%ld,%c,%lf\n",dev,offset,length,ch,ts);
  }
close(fd);
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章