假设我有一个程序来计算从一个字符串中将两个整数相乘的结果。我使用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线吗?我需要施展吗?我不确定如何解决这个问题。
答案 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