想要实现当命令行参数的数量不为四个的时候报错,缺少的数量不同报错内容不同,下文只展示了部分关键代码。
#include
#include
int main(int argc,char **argv)
{
FILE *fp;
FILE *average;
char read[100][200];
int i=0;
int k=0;
float stor[8][100];
int idr[100];
float averanswer = 0;
int id=0;
int grade=0;
int stdnumber=0;
float gradenumber= 0;
int gradenumberconstant=0;
fp= fopen(argv[3],"a+");
average= fopen("./averages.ref","w+");
sscanf(argv[1],"%d",&stdnumber);
sscanf(argv[2],"%d",&gradenumberconstant);
if(argc==1){
printf("Requires 1 to 100 students. Exiting.\n");
return 0;
}
else if(argc==2){
printf("Requires 1 to 8 grades. Exiting.\n");
return 0;
}
else if(argc==3){
printf("Input file does not exist. Exiting.\n");
return 0;
}
当在powershell 输入前两个参数不输入最后一个参数时会报最后一个"Input file does not exist. Exiting.\n"的错然后退出程序,而只输入一个命令行参数或者不输入命令行参数的时候则不会报错直接退出程序(就是说"Requires 1 to 100 students. Exiting.\n"和"Requires 1 to 8 grades. Exiting.\n"不会被答应出来)。
尝试使用当命令行参数argv[1]==NULL以及argv[2]==NULL时报错,结果失败仍然无法对前两个参数缺失时报错,最后一个参数缺失时正常报错。
希望能够在缺少对应的命令行参数的时候报相应的错误。
#include <stdio.h>
#include <math.h>
int main(int argc, char **argv)
{
FILE *fp;
FILE *average;
char read[100][200];
int i = 0;
int k = 0;
float stor[8][100];
int idr[100];
float averanswer = 0;
int id = 0;
int grade = 0;
int stdnumber = 0;
float gradenumber = 0;
int gradenumberconstant = 0;
if (argc == 1)
{
printf("Requires 1 to 100 students. Exiting.\n");
return 0;
}
else if (argc == 2)
{
printf("Requires 1 to 8 grades. Exiting.\n");
return 0;
}
else if (argc == 3)
{
printf("Input file does not exist. Exiting.\n");
return 0;
}
fp = fopen(argv[3], "a+");
average = fopen("./averages.ref", "w+");
sscanf(argv[1], "%d", &stdnumber);
sscanf(argv[2], "%d", &gradenumberconstant);
return 0;
}
条件判断往前提 不然会提前使用argv