gpt4 book ai didi

c - 我需要制作一个 C 程序,它接受作为命令行参数传递的整数并打印总和

转载 作者:行者123 更新时间:2023-11-30 16:13:31 24 4
gpt4 key购买 nike

我需要在单个文件“sum.c”中编写一个程序,该程序在命令行上接受多个整数,获取这些整数的总和并将它们打印到标准输出。该程序必须使用类似 strtol 的东西来将字符串转换为数字。

到目前为止,我的代码如下所示:

    #include <stdio.h>

int main (int argc, char *argv[]){
int a, b, sum;
int i; //looping through arguments using i

if (argc<2) {
printf("Please include at least two integers to get the sum.\n");
return -1;
}

a = atoi(argv[1]);
b = atoi(argv[2]);

sum=a+b;

printf(sum);
return (0);

}

这包括错误检查以确保至少传递两个参数。但是我当前的代码只允许两个参数。我需要弄清楚如何更改它以处理任意数量的参数,并检查传递的数字是否只是整数而没有其他内容。我在此处发布的原始代码仍然存在编译错误。我已经从编码中休息了很长时间,所以我知道目前的情况非常糟糕。

更新的代码:

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[]) {
int sum;
sum = 0;

if (argc<2) {
printf("Please include at least two integers to get the
sum.\n");
exit (-1);
}

for (int counter = 1; argv[counter] != NULL; ++counter) {
sum += atoi(argv[counter]);
}

printf("%d\n", sum);
exit (0);
}

现在看起来怎么样?

执行时收到错误:

./sum.c: line 4: syntax error near unexpected token `('
./sum.c: line 4: `int main (int argc, char *argv[]) {'

最佳答案

新代码基本上没问题,除了调用 exit -1 时出现错误(这是一个错误)。调用必须是 exit(-1)

exit -1 没有生成编译错误的原因是 C 允许编译器接受没有任何效果的表达式作为合法的(因此,以下是合法的 C 代码:

static void
useless_func (void)
{
5;
exit;
}

该函数有两行根本不执行任何操作——值 5 和作为退出函数地址的值。请注意,调用unused_func()不会导致程序终止,因为退出函数本身没有被调用。

你可以在你的程序中看到,如果你不带参数调用,程序不会终止——将打印 0 的总和。如果您将 exit -1 行更改为 exit 1 您将收到编译错误,因为现在您不再有合法的表达式(编译器将您所拥有的视为 exit - 1 而不是 exit -1,减号使其成为一个表达式)。

如果您使用 gcc 作为编译器,则使用 -Wall 进行编译将生成警告。如果您使用 -Wall -Werror 进行编译(这是一个非常好的习惯),您将收到错误。

此外,您应该通过调用 exit(0); 来结束程序

关于c - 我需要制作一个 C 程序,它接受作为命令行参数传递的整数并打印总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58035429/

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