-1

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

谢谢

4

5 回答 5

8

将该整数除以 10。

123 / 10 == 12。

于 2013-02-08T21:10:56.750 回答
7

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

于 2013-02-08T21:10:56.977 回答
3

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

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

对于字符串,取决于您如何分配它,您可以将 3 设置为一个\0字符,以便不在字符串中打印它。

于 2013-02-08T21:11:22.087 回答
3

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

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

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

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

于 2013-02-08T21:14:27.250 回答
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;
}
于 2013-02-08T21:14:47.017 回答