有了,我必须在此char double[] = "1.2345678";
之后修剪第 4 位及以上的所有数字,即使 其达到。.
char *
"1.234"
问问题
254 次
3 回答
3
于 2012-12-03T12:44:59.947 回答
2
一个明显的解决方案是将字符替换为NUL
,如下所示:
char *foo = strdup("1.2345678"); // FIXME: check return value
foo[5] = '\0';
请注意,确切的位置可能会有所不同,具体取决于“。”之前出现的数字数量。特点。
遍历 string foo
,passed_dot
如果遇到 '.' 则更改状态,并在另外NUL
4 个字符后插入 a:
char *p = foo;
int i = 0;
int passed_dot = 0;
while (p && *p) {
if (*p == '.') passed_dot = 1;
if (passed_dot) i++;
if (i == 4) {
*p = '\0';
break;
}
p++;
}
如果你买不起更多的 RAM,你可以strdup()
得到字符串和free()
旧的字符串以节省内存:
new_str = strdup(foo); // and don't forget to check for NULL
free(foo);
于 2012-12-03T12:45:20.110 回答
2
注意
char * double= "1.2345678";
声明一个字符串文字。这是 const 所以不能直接修改。要获取可修改的字符串,您可以将其声明为
char double[] = "1.2345678";
或者
char* double = strdup("1.2345678");
然后按照其他答案中的建议插入一个 nul 字符。
于 2012-12-03T12:47:17.047 回答