在C中截断整数

时间:2013-02-08 21:09:32

标签: c integer

有没有办法从C中的整数中删除最后一个数字?例如,如果用户输入了数字:“123”有没有办法将其更改为“12”?

由于

5 个答案:

答案 0 :(得分:8)

将整数除以10。

123/10 == 12。

答案 1 :(得分:7)

我通常只是除以10.整数数学截断。通常会让初学者疯狂,但这正是你想要的。但要注意负数。

答案 2 :(得分:3)

如果要将其截断为整数值,只需使用整数除法。

number = 123;
number /= 10;
/* number is now 12 */

对于字符串,取决于您如何分配字符串,您只需将3设置为\0字符即可将其打印在字符串中。

答案 3 :(得分:3)

除以10绝对是首选解决方案。

但是,如果要在转换为整数之前从输入字符串中删除最后一位数(例如,如果用户可能输入的数字太大而无法放入int ,如5000111222),您可以执行以下操作,假设用户的输入位于char *变量buf中:

buf[strlen(buf)-1] = 0;

这会提前终止字符串一个字符。请注意,如果字符串为空(""),这将产生未定义的行为,因此请确保字符串先是非空的。

答案 4 :(得分:1)

请记住,数字与十进制表示不同。

那就是说,你可以在这里使用整数除法除以十。

#include <stdio.h>

int main(int argc, char *argv[]) {
    int i;
    for (i = 10; i < 21; i++)
        printf("%d %d\n", i, i/10);

    return 0;
}