拥有char double[] = "1.2345678";
后,我必须在.
char *
之后的"1.234"
之后修剪第4位及以上的所有数字,即将其设为{{1}}。
答案 0 :(得分:3)
答案 1 :(得分:2)
一个明显的解决方案是用NUL
替换字符,如下所示:
char *foo = strdup("1.2345678"); // FIXME: check return value
foo[5] = '\0';
请注意,确切位置可能会有所不同,取决于“。”之前出现的位数。字符。
对字符串foo
进行迭代,如果遇到'。'则更改passed_dot
中的状态,并在另外4个字符后插入NUL
:
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++;
}
如果你买不起更多内存,你可以strdup()
生成的字符串和free()
旧字符串以节省内存:
new_str = strdup(foo); // and don't forget to check for NULL
free(foo);
答案 2 :(得分:2)
请注意
char * double= "1.2345678";
声明一个字符串文字。这是const所以不能直接修改。要获得可修改的字符串,可以将其声明为
char double[] = "1.2345678";
或
char* double = strdup("1.2345678");
然后按照其他答案的建议插入一个空字符。