将char数组转换为整数

时间:2017-05-19 02:59:23

标签: c

我知道这可能是一个非常初学的问题,但我已经打了几个小时。任何提示将不胜感激。

我得到一个空终止字符串。我试图使用C和strtol将其转换为整数,这一直到NULL之前的最后一个字符是一个/ n。我不知道怎么让strtol在那个角色面前停下来。

转换代码:

char *end;
arr[0] = strtol(temps, &end, 10);
for(int i = 1; i < n - 1; i++){
    arr[i] = strtol(end, &end, 10);
}
arr[n] = strtol(end, NULL, 10);

输入:

49 32 45 50 32 45 56 32 52 32 53 10 // ascii values 

预期产出:

1 -2 -8 4 5 // character array

输出:

1 -2 -8 4 1 // int array

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这一行可能写出了数组边界:

arr[n] = strtol(end, NULL, 10);

无论如何,这应该是arr[n-1],因为分配给的最后一个索引是n-2。但逻辑可以简化,使代码不易受此类错误的影响:

char *end;
arr[0] = strtol(temps, &end, 10);
for(int i = 1; i < n; i++){
    arr[i] = strtol(end, &end, 10);
}

或者进一步简化为:

char *end = temps;
for(int i = 0; i < n; i++){
    arr[i] = strtol(end, &end, 10);
}