C用Strtol将字符串分解为两个Ints

时间:2016-01-24 17:14:13

标签: c strtol

假设我有一个程序来计算从一个字符串中将两个整数相乘的结果。我使用strtol来分隔第一部分但是如何分隔第二部分呢?例如," 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线吗?我需要施展吗?我不确定如何解决这个问题。

1 个答案:

答案 0 :(得分: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