我有一个长字符串,我知道整数的开始和结束位置。我想提取整数并将其存储在变量中。这就是我现在可以做到的。
//MY_STRING, INT_START, INT_END are the string, start
//position of the int and end position respectively.
char * temp;
strncpy(temp, MY_STRING+INT_START, INT_END-INT_START);
int n = atoi(temp);
问题是我可以在一行中执行此操作,而不是使用临时字符串吗?
我可以在一行中执行此操作,而不使用临时字符串吗?
使用sscanf()
一个快速肮脏NO- temp
。
int n;
// v--- scan width limit
// | v---------------v
if (sscanf(MY_STRING + INT_START, "%*d", INT_END-INT_START, &n) == 1) {
puts("Success");
}
更好的代码会考虑溢出问题。
OP的代码不好,因为temp
不确定是否指向字符串。它可能缺少空字符。
strncpy(temp, MY_STRING+INT_START, INT_END-INT_START);
int n = atoi(temp); // bad
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句