1

有了,我必须在此char double[] = "1.2345678"; 之后修剪第 4 位及以上的所有数字,即使 其达到。.char *"1.234"

4

3 回答 3

3

找到'.',前进四步,将字符串终止符放在那里。

注意不要自己传递字符串终止符,如果点后面的数字少于三位。

为了帮助您找到点,请查找strchr函数。

于 2012-12-03T12:44:59.947 回答
2

一个明显的解决方案是将字符替换为NUL,如下所示:

char *foo = strdup("1.2345678");   // FIXME: check return value
foo[5] = '\0';

请注意,确切的位置可能会有所不同,具体取决于“。”之前出现的数字数量。特点。

遍历 string foopassed_dot如果遇到 '.' 则更改状态,并在另外NUL4 个字符后插入 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 回答