- //程序名:linkfile.c
- //执行时可用:linkfile filename1 filename2形式的命令行运行,将文件filename2的内容附加在文件filename1之后。
- // file linked program.
- #include <stdio.h>
- #define SIZE 512
- void main(int argc,char *argv[])
- {
- char buffer[SIZE];
- FILE *fp1,*fp2;
- if(argc!=3)
- {
- printf("Usage: linkfile filename1 filename2\n");
- return;
- }
- // 按追加方式打开argv[1] 所指文件
- if((fp1=fopen(argv[1],"a"))==NULL)
- {
- printf("The file %s can not be opened.\n",argv[1]);
- return;
- }
- if((fp2=fopen(argv[2],"r"))==NULL)
- {
- printf("The file %s can not be opened.\n",argv[2]);
- return;
- }
- // 读入一行立即写出,直到文件结束
- while(fgets(buffer,SIZE,fp1)!=NULL)
- printf("%s\n",buffer);
- while(fgets(buffer,SIZE,fp2)!=NULL)
- fputs(buffer,fp1);
- fclose(fp1);
- fclose(fp2);
- if((fp1=fopen(argv[1],"r"))==NULL)
- {
- printf("The file %s can not be opened.\n",argv[1]);
- return;
- }
- while(fgets(buffer,SIZE,fp1)!=NULL)
- printf("%s\n",buffer);
- fclose(fp1);
- }
E. 往文件中写格式化数据
1.函数原型
int fprintf(FILE *fp,char *format,arg_list)
2.功能说明
将变量表列(arg_list)中的数据,按照format指出的格式,写入由fp指定的文件。fprintf()函数与printf()函数的功能相同,只是printf()函数是将数据写入屏幕文件(stdout)。
3.参数说明
fp:这是个文件指针,指出要将数据写入的文件。
format:这是个指向字符串的字符指针,字符串中含有要写出数据的格式,所以该字符串成为格式串。格式串描述的规则与printf()函数中的格式串相同。
arg_list:是要写入文件的变量表列,各变量之间用逗号分隔。
4.返回值
无。
5. 实例
【8.5】下列程序的执行文件为display.exe,执行时键入命令行:
display [-i][-s] filename
下面的表格列出了命令行参数的含义及其功能:
- //存储文件名:save.txt
- //程序代码如下:
- // file display program.
- #include <stdio.h>
- void main()
- {
- char name[10];
- int nAge,nClass;
- long number;
- FILE *fp;
- if((fp=fopen("student.txt","w"))==NULL)
- {
- printf("The file %s can not be opened.\n","student.txt");
- return;
- }
- fscanf(stdin,"%s %d %d %ld",name,&nClass,&nAge,&number);
- fprintf(fp,"%s %5d %4d %8ld",name,nClass,nAge,number);
- fclose(fp);
- if((fp=fopen("student.txt","r"))==NULL)
- {
- printf("The file %s can not be opened.\n","student.txt");
- return;
- }
- fscanf(fp,"%s %d %d %ld",name,&nClass,&nAge,&number);
- printf("name nClass nAge number\n");
- fprintf(stdout,"%-10s%-8d%-6d%-8ld\n",name,nClass,nAge,number);
- fclose(fp);
- }