令以下代码达到接受一个命令选项-l,此选项表示只显示输入文本的行数,不显示其内容效果:#include <stdio.h> #include <stdlib.h> main(int argc, char *argv[]) { int ch; int align=0; // align:对齐标志。0为不对齐;1为对齐。 int strip=1; // strip:滤除标志。0为不滤除;1为滤除。 printf("****vis2 by your -sid****\n"); //将your -sid改为你的学号 if(argc>1 && strcmp(argv[1], "-s")==0) align=1; //如有-s选项,设置对齐标志 while((ch=getchar())!=EOF) { if(islower(ch)) ch=toupper(ch); if(!align) putchar(ch); else if (!strip || (ch!= ' ' && ch!= '\t')) { //如果不是前导空白字符 putchar(ch); strip=0; //清除滤除标志,不滤除非行首的空白字符 if(ch=='\n') strip=1; //行末处,重置滤除标志 } } exit(0); }
时间: 2024-03-14 08:46:42 浏览: 73
可以在代码中添加以下代码来接受命令选项-l,实现只显示输入文本的行数而不显示其内容的效果:
```c
int show_lines_only = 0; // show_lines_only:只显示行数标志。0为不只显示行数;1为只显示行数。
if (argc > 1 && strcmp(argv[1], "-l") == 0) {
show_lines_only = 1;
}
```
然后在代码中添加以下代码,来实现只显示输入文本的行数而不显示其内容的效果:
```c
int line_count = 1; // line_count:行数计数器
while ((ch = getchar()) != EOF) {
if (show_lines_only && ch == '\n') {
printf("%d\n", line_count);
line_count++;
} else {
if (islower(ch)) {
ch = toupper(ch);
}
if (!align) {
putchar(ch);
} else if (!strip || (ch != ' ' && ch != '\t')) {
putchar(ch);
strip = 0;
if (ch == '\n') {
strip = 1;
line_count++;
}
}
}
}
```
这样,如果命令行中输入了选项-l,程序就只会输出输入文本的行数,而不会输出其内容。
阅读全文