#include<stdio.h>
#include<stdlib.h>//存放的是exit
/*
int argc
这个东东用来表示你在命令行下输入命令的时候,一共有多少个参数。比方说你的程序编译后,可执行文件是test.exe
D:\tc2>test
这个时候,argc的值是1
但是
D:\tc2>test.exe myarg1 myarg2
的话,argc的值是3。也就是 命令名 加上两个参数,一共三个参数
char *argv[]
这个东东用来取得你所输入的参数
D:\tc2>test
这个时候,argc的值是1,argv[0]的值是 “test”
D:\tc2>test myarg1 myarg2
这个时候,argc的值是3,argc[0]的值是”test”,argc[1]的值是”myarg1”,argc[2]的值是”myarg2”。
这个东东一般用来为程序提供非常重要的信息,如:数据文件名,等等。
如:copy a.c b.txt
这个时候,a.c和b.txt就是所谓的“非常重要的信息”。不指定这两个文件,你没法进行拷贝。
当你的程序用到argc和argv这两个参数的时候,可以简单地通过判断argc的值,来看看程序的参数是否符合要求
*/
int main(int argc,char *argv[])
{
FILE *old;
FILE *newfile;
char ch;
if(argc!=3)
{
/*
如:copy a.c b.txt
这个时候,a.c和b.txt就是所谓的“非常重要的信息”。不指定这两个文件,你没法进行拷贝。
当你的程序用到argc和argv这两个参数的时候,可以简单地通过判断argc的值,来看看程序的参数是否符合要求
*/
printf("You forgot to enter a filename\n");
exit(0);
}
if((old=fopen(argv[1],"rb"))==NULL)
{
printf("cannot open infile\n");
}
if((newfile=fopen(argv[2],"wb"))==NULL)
{
printf("cannot open outfile\n");
exit(0);
}
//通过fgetc函数从原有文件中逐个字节地读出
//通过fputc函数向新复制文件中逐个字节地写入,一直到原有文件结束为止
while(!feof(old))
fputc(fgetc(old),newfile);
fclose(old);
fclose(newfile);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
FILE *fp;
if((fp=fopen("bi.dat","wb"))==NULL)
exit(0);
for(i=0;i<10;i++)
{
scanf("%d",&j);
fwrite(&j,sizeof(int),1,fp);
}
fclose(fp);
}
#include<stdio.h>
#include<stdlib.h>
#define MAX 256
int main(int argc,char *argv[]){
FILE *fp;
char string[MAX];
int i;
if(argc!=2)
{
printf("the number of arguments not correct\n");
printf("\n Usage:可执行文件名 dispfilename");
exit(0);
}
if((fp=fopen(argv[1],"r"))==NULL)
{
printf("can not open file\n");
exit(0);
}
i=1;
while(fgets(string,MAX,fp)!=NULL)
printf("%d %s",i++,string);
fclose(fp);
}