C语言中,%m.ns与%m.nf的区别

%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。
%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。可以理解为m前为正,则字符串右对齐。
%-ms:如果串长小于m,则在m列范围内,m前为负,字符串左对齐,右补空格。
%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。
%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。

例如:

#include 
int main(){
   
    char *a;
    a="mynameisma";
    printf("%3.10s\n",a);    //这里m虽然取值为3,但是n的值大于m,所以取值n,保证n个字符输出
    printf("%12.3s\n",a);    //输出"         myn"注意,n取的是元素个数,不包括空格
	return 0;
}

%f:例如:printf("%f", 12.5)输出“12.500000”浮点型数据(不包括双引号)。(%f小数点后默认保留6位小数)
%mf:输出的数据占m列,如字符串本身长度大于m,则突破获m的限制,将浮点型对象全部输出。若串长小于m,则左补空格。可以理解为m前为正,则浮点型对象右对齐。
%-mf:如果浮点型对象长小于m,则在m列范围内,m前为负,浮点型对象左对齐,右补空格。
%m.nf:输出占m列,浮点型对象保留n个小数位。
%-m.nf:其中m、n含义同上,m为输出的宽度,n为保留的小数位数,若浮点型对象长小于m,则在m列范围内,m前为负,浮点型对象左对齐,右补空格

例如:

#include 
int main(){
   
 
    float a=12.3;
    printf("%10.3f",a);
    
	return 0;
}

输出结果为:"    12.300",注意没有双引号输出。
#include 
int main(){
   
 
    float a=12.3;
    printf("%-10.3f",a);
    
	return 0;
}
输出结果为:"12.300    ",注意没有双引号输出。

 

你可能感兴趣的:(C语言学习)