您的位置:首页 > 运维架构 > Linux

Linux编程-标准IO(3)

2014-12-20 13:51 337 查看
读写定位及格式化输出
1. 读写定位函数
   int fseek(FILE *stream, long offset, int whence);
设置文件读写位置

  long ftell(FILE *stream); 获取文件读写位置

  void rewind(FILE *stream); 回到文件开头

  

  可处理文件长度大于long
  int fseeko(FILE *stream, off_t offset, int whence);
  off_t ftello(FILE *stream);


  IOS C标准,支持跨平台

  int fgetpos(FILE *stream, fpos_t *pos); 设置文件读写位置

  int fsetpos(FILE *stream, fpos_t *pos); 获取文件读写位位置



2. 格式化输入输出函数
   格式化输入:
   
#include <stdio.h>

    int scanf(const char *format, ...);
//从标准IO中输入

    int fscanf(FILE *stream, const char *format, ...);
//从文件中输入

    int sscanf(const char *str, const char *format, ...);
//从字符串

   #include <stdarg.h>

    int vscanf(const char *format, va_list ap);

    int vsscanf(const char *str, const char *format, va_list ap);

    int vfscanf(FILE *stream, const char *format, va_list ap);


(2)格式化输出
#include <stdio.h>
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);

#include <stdarg.h>
int vprintf(const char *format, va_list ap);
int vfprintf(FILE *stream, const char *format, va_list ap);
int vsprintf(char *str, const char *format, va_list ap);
int vsnprintf(char *str, size_t size, const char *format, va_list ap);


3. 测试用例
#include <stdio.h>

#include "scanfTest.h"

void scanTest()

{
int iD1 = 0, iD2 = 0, iD3 = 0;
scanf("%d", &iD1, &iD2, &iD3);
printf("data: %d,%d,%d\n", iD1, iD2, iD3);

char szBuf[100] = {0};
sscanf("123456", "%s", szBuf);
printf("data: %s\n", szBuf);

}


输出:
1

data: 1,0,0

data: 123456

总结:
(1)scanf一次只能输入一个

(2)sscanf 能做到的,sprintf能做的更好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: