请帮忙解释下这段代码什么意思,高手帮忙!解决方案
请帮忙解释下这段代码什么意思,高手帮忙!!!
int main(int argc, char *argv[])
{
char *s;
if (argc != 4) {
printf("Usage:lzhuf e(compression)|d(uncompression)"
" infile outfile\n");
return EXIT_FAILED;
}
if ((s = argv[1], s[1] || strpbrk(s, "DEde") == NULL)
|| (s = argv[2], (infile = fopen(s, "rb")) == NULL)
|| (s = argv[3], (outfile = fopen(s, "wb")) == NULL)) {
printf("$@HHH(J %s\n", s);
return EXIT_FAILED;
}
if (toupper(*argv[1]) == 'E')
Encode();
else
Decode();
fclose(infile);
fclose(outfile);
return EXIT_OK;
}
------解决方案--------------------
int main(int argc, char *argv[])
{
char *s;
if (argc != 4) { //如果输入命令下的参数不足4个则立即返回并提示输入的格式
printf("Usage:lzhuf e(compression) | d(uncompression)"
" infile outfile\n");
return EXIT_FAILED;
}
if ((s = argv[1], s[1] || strpbrk(s, "DEde") == NULL) //在s中寻找字符串"DEde"中任何一个相匹配的第一个字符
|| (s = argv[2], (infile = fopen(s, "rb")) == NULL) //以读的形式打开文件argv[2]
|| (s = argv[3], (outfile = fopen(s, "wb")) == NULL))//以写的形式打开文件argv[3]
{
//如果argv[1]中的字符串中字符不在"DEde"中或文件打开失败
printf("$@HHH(J %s\n", s);
return EXIT_FAILED;
}
if (toupper(*argv[1]) == 'E') //如果输入参数argv[1]为'E'则执行Encode(),否执行Decode()
Encode();
else
Decode();
fclose(infile); //关闭文件
fclose(outfile); //关闭文件
return EXIT_OK;
}
------解决方案--------------------
int main(int argc, char *argv[])
{
char *s;
if (argc != 4) {
printf("Usage:lzhuf e(compression)|d(uncompression)"
" infile outfile\n");
return EXIT_FAILED;
}
if ((s = argv[1], s[1] || strpbrk(s, "DEde") == NULL)
|| (s = argv[2], (infile = fopen(s, "rb")) == NULL)
|| (s = argv[3], (outfile = fopen(s, "wb")) == NULL)) {
printf("$@HHH(J %s\n", s);
return EXIT_FAILED;
}
if (toupper(*argv[1]) == 'E')
Encode();
else
Decode();
fclose(infile);
fclose(outfile);
return EXIT_OK;
}
------解决方案--------------------
int main(int argc, char *argv[])
{
char *s;
if (argc != 4) { //如果输入命令下的参数不足4个则立即返回并提示输入的格式
printf("Usage:lzhuf e(compression) | d(uncompression)"
" infile outfile\n");
return EXIT_FAILED;
}
if ((s = argv[1], s[1] || strpbrk(s, "DEde") == NULL) //在s中寻找字符串"DEde"中任何一个相匹配的第一个字符
|| (s = argv[2], (infile = fopen(s, "rb")) == NULL) //以读的形式打开文件argv[2]
|| (s = argv[3], (outfile = fopen(s, "wb")) == NULL))//以写的形式打开文件argv[3]
{
//如果argv[1]中的字符串中字符不在"DEde"中或文件打开失败
printf("$@HHH(J %s\n", s);
return EXIT_FAILED;
}
if (toupper(*argv[1]) == 'E') //如果输入参数argv[1]为'E'则执行Encode(),否执行Decode()
Encode();
else
Decode();
fclose(infile); //关闭文件
fclose(outfile); //关闭文件
return EXIT_OK;
}
------解决方案--------------------
- C/C++ code
int main(int argc, char *argv[]) { char *s; if (argc != 4) { //判断命令行参数个数 printf("Usage:lzhuf e(compression) |d(uncompression)" " infile outfile\n"); return EXIT_FAILED; } if ((s = argv[1], s[1] | | strpbrk(s, "DEde") == NULL) //第二个参数如果有d或者e大小写都可以,就算错误,s[1]为空也错误 | | (s = argv[2], (infile = fopen(s, "rb")) == NULL) //第三个参数是输入文件名, | | (s = argv[3], (outfile = fopen(s, "wb")) == NULL)) { //第斯个参数是输出文件名, printf(".$@.H.H.H.(J %s\n", s); return EXIT_FAILED; } if (toupper(*argv[1]) == 'E') //第二个参数的第二个字母是大小写的e Encode(); else Decode(); fclose(infile); fclose(outfile); return EXIT_OK; }