gpt4 book ai didi

c - 在 C 中对命令行参数执行操作

转载 作者:行者123 更新时间:2023-11-30 20:57:02 25 4
gpt4 key购买 nike

我正在尝试用 C 语言编写一个程序,该程序接受 10 个命令行参数并对它们执行某些操作。我已经有了接受 10 个参数的部分 int main(int argc, char **argv) 以及在用户输入所有 10 个参数后输出结果的部分 printf("% s", argv[i]);

我只是想弄清楚如何在输入的每个命令行参数上执行操作本身,即:

  • 删除所有特殊符号,例如 (*&%^’$+_
  • 删除所有非字母

最后:

  • 如果参数包含一个或多个数字,则假设第一个看到的数字是 n,用第 n 个参数替换该 arg(唯一的异常(exception)是 0,它应该映射到第 10 个参数)。例如,如果输入的参数是 764,则该参数将被第 7 个参数替换。

编辑:更新了下面更好的示例

这是一个示例输入(10 个用户输入的参数):

sda 789 io90 poi 4kl24PP +df_1JK MN BV XC __5555

输出应该是什么:

sda  MN  XC  poi  poi  sda  MN  BV  XC  klPP

(另请注意 789 如何映射到第 7 个输出,即 MN)

最佳答案

所以这是我的评论作为答案:搜索每个参数中的第一个数字。如果找到,则将该参数替换为第 n 个参数的无符号和无数字的副本,否则将其替换为其自身的无符号和无数字的副本。 C99 实现:

int main(int argc, char *argv[])
{
char *copies[argc - 1];

for (int i = 1; i < argc; i++) {
size_t p = strcspn(argv[i], "0123456789");
int n = argv[i][p] ? argv[i][p] - '0' : i;
if (n == 0) n = 10;
char *copyee = argv[n];

size_t l = strlen(copyee);
copies[i - 1] = malloc(l + 1);
char *copy = copies[i - 1];
for (; *copyee; copyee++) {
if (isalpha(*copyee)) {
*copy++ = *copyee;
}
}
*copy = 0;
}

for (int i = 0; i < argc - 1; i++) {
printf("%s ", copies[i]);
free(copies[i]);
}

printf("\n");
return 0;
}

关于c - 在 C 中对命令行参数执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16398907/

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