如何修改C语言程序使手机号格式化输出时保留前导零
C语言手机号格式化前导零缺失修复方案
问题根因
printf的%d格式化符默认只输出数字的有效位,不会自动补前导零。你的场景中手机号中间段、末尾段都要求固定3位长度,不足3位时需要用0补位,所以需要调整格式化参数。
修复操作
将所有输出语句中对应中间三位、末尾三位的%d替换为%03d即可:
%03d表示输出固定3位宽度的十进制整数,长度不足时左侧自动补0
修改后的完整代码如下:
int main() { int mobBroj,prvicifri,vtoricifri,treticifri; scanf("%d", &mobBroj); prvicifri = mobBroj / 1000000; vtoricifri = (mobBroj % 1000000) / 1000; treticifri = mobBroj % 1000; if(prvicifri == 70 || prvicifri == 72 || prvicifri == 71) printf("0%d/%03d-%03d T-mobile", prvicifri, vtoricifri, treticifri); else if(prvicifri == 75 || prvicifri == 76 || prvicifri == 77 || prvicifri == 78) printf("0%d/%03d-%03d A1", prvicifri, vtoricifri, treticifri); else printf("0%d/%03d-%03d LycaMobile", prvicifri, vtoricifri, treticifri); return 0; }
验证效果
修改后输入070120004,输出结果为070/120-004 T-mobile,符合手机号分段格式要求。
内容的提问来源于stack exchange,提问作者Бојан Василевски
相关产品推荐
相关产品推荐

