我知道这可能是一个非常初学的问题,但我已经打了几个小时。任何提示将不胜感激。
我得到一个空终止字符串。我试图使用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
感谢您的帮助。
答案 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);
}