如何在C语言中对字符串左截断?保留右侧4位数字
截取数字字符串的最后4位数字
方法一:直接处理字符串(推荐)
这种方法无需将字符串转为整数,避免大数字溢出问题,直接通过字符串索引截取目标内容:
#include <stdio.h> #include <string.h> int main() { char val[20] = "1234567"; int len = strlen(val); // 字符串长度≥4时取倒数4位,不足则取全部内容 char *last_four = len >= 4 ? val + len - 4 : val; printf("%s\n", last_four); return 0; }
原理:利用字符串的指针特性,val + len -4指向原字符串倒数第4个字符的位置,从该位置输出到字符串结尾,就是最后4位数字。如果原字符串长度不足4,直接输出全部内容。
方法二:通过整数取模处理
如果确定数字字符串不会超出整数范围,可以先转成整数,再对10000取模得到最后4位:
#include <stdio.h> #include <stdlib.h> int main() { char val[20] = "1234567"; // 用long long避免大数字溢出,适配更长的数字字符串 long long num = atoll(val); int last_four = num % 10000; // %04d会自动补前导零(比如输入"123"输出"0123"),不需要补零则用%d printf("%04d\n", last_four); return 0; }
你之前代码的问题
你使用的%-4d是左对齐输出整数,当整数位数超过4时,会完整输出整个数字,而非截取最后4位,因此无法达到预期效果。
内容的提问来源于stack exchange,提问作者eduardo franco
相关产品推荐
相关产品推荐

