首页 > 解决方案 > 在 C 中的一个命令中将字符串的一部分转换为 int

问题描述

我有一个长字符串,我知道整数的开始和结束的位置。我想提取整数并将其存储在变量中。这就是我现在可以做到的。

//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);

问题是我可以在一行中执行此操作,而不是使用临时字符串吗?

标签: cstringparsing

解决方案


我可以在一行中执行此操作,而不是使用临时字符串吗?

用于sscanf()快速脏不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

推荐阅读