参考标准I/O库函数标准I/O库函数
讲一下printf
和scanf
函数了,这两个函数都有很多种形式。
#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);
返回值:成功返回格式化输出的字节数(不包括字符串的结尾'\0'),出错返回一个负值
scanf函数的各种形式
#include <stdio.h>
int scanf(const char *format, ...);
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);
返回值:返回成功匹配和赋值的参数个数,成功匹配的参数可能少于所提供的赋值参数,返回0表示一个都不匹配,出错或者读到文件或字符串末尾时返回EOF并设置errno
下面的程序实现标题所述功能
#include <stdio.h>
#include <string.h>
#define MAX_LINE 256
#define SOMEDATA 500000
int main(int argc, char *argv[])
{
FILE *fp,*fq;
char buf[MAX_LINE];
int key,value;
fp = fopen(argv[1], "r");
if (fp == NULL)
printf("error when open a file1.\n");
fq = fopen(argv[2], "w");
if (fq == NULL)
printf("error when open a file2.\n");
while(fgets(buf, MAX_LINE, fp) != NULL)
{
sscanf(buf, "%d %d", &key,&value);
value-=SOMEDATA;//do something
fprintf(fq, "%d %d\n",key,value);
}
fclose(fq);
fclose(fp);
}