gpt4 book ai didi

c - 选择长度的线,C 过滤器

转载 作者:行者123 更新时间:2023-11-30 17:22:24 25 4
gpt4 key购买 nike

我正在编写一个过滤器,它应该选择具有指定长度的所有行。我最终得到了这段代码,但我不知道如何指定n。我的意思是,n(以及可选的m)应该替换为命令提示符中的多行,但我不知道如何在代码中描述它。我想到了 case "%d",但据我所知不可能这样写。这是我到目前为止的代码:

#include<stdio.h>
#include<string.h>

int main(int argc, char *argv[])
{
int n;
int m;
char line[200];
while(fgets(line,sizeof(line)/sizeof(char), stdin)!=NULL)
{
if(argc>1){
switch(argv[0][0])
{
case 'n':
strlen(line)==n;
break;

case '#n':
strlen(line)<n;
break;

case 'n m':
strlen(line)>=n && strlen(line)<=m;
break;

case 'n#':
strlen(line) > n;
break;
}
printf("%s\n", line);
}}
return 0;
}

您的帮助对我来说意义重大!我真的不知道如何让它继续工作。

最佳答案

我认为你应该在循环之外解析命令行。假设您需要程序的调用者在命令行上指定 nm,那么只需获取前两个参数并将它们转换为整数,然后循环您的标准输入。像这样的事情:

/* call this minmax.c */
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int n, m, len;
char line[200];

if (argc < 3) {
printf("Must specify min & max line length.");
return -1;
}

n = atoi(argv[1]);
m = atoi(argv[2]);

while(fgets(line, 200, stdin) != NULL) {
len = strlen(line);
if (len >=n && len <= m)
printf(line);
}
return 0;
}

假设您在 *nix 上运行:

cc -ominmax minmax.c

然后用最小和最大行长度调用它

./minmax 2 5

这将回显您键入的至少 2 个字符但不超过 5 个字符的每一行。

关于c - 选择长度的线,C 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28025511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com