【C語言】逐行讀取文字數字資料,經過某種處理再逐行寫入另外一個文字

pengfoo發表於2013-01-12

參考標準I/O庫函式標準I/O庫函式

講一下printfscanf函式了,這兩個函式都有很多種形式。

#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);
	
	
}


 

相關文章