0

假设我有一个程序可以计算将字符串中的两个整数相乘的结果。我使用 strtol 分隔第一部分,但如何分隔第二个 int?例如,“12 5”将给出 60 的结果。

现在我的代码看起来像:

    int multiply(const char *input) {
        int result = 0;
        char *second_int;
        int i = strtol(input_line, &second_int, 10);

        result = i * second_int;

        return result;

所以很明显现在这会产生错误,因为我只将字符串的第一部分转换为整数。如何将剩余的字符串转换为整数?我需要另一条 strtol 线吗?我需要投吗?我不确定该怎么做。

4

1 回答 1

1

strtol声明如下:

long int strtol(const char *nptr, char **endptr, int base);

并从man strtol

如果 endptr 不为 NULL,strtol() 将第一个无效字符的地址存储在 *endptr 中。

因此,您可以使用存储在 *endptr 中的值开始扫描另一个值。例子:

char *str="12 5";
char *end;
printf("%ld\n", strtol(str, &end, 10));
printf("%ld\n", strtol(end, &end, 10));

将打印:

12
5
于 2016-01-24T17:26:06.947 回答