当在scanf中使用%d时

  • 跳过空白字符,直到遇到一个非空白字符开始读取,之后直到遇到一个非数字字符之后停止读取。非数字字符会被继续留在输入流中等待下次读取
  • 如果使用了字段宽度,则在读取到字段宽度和非数字字符哪个先到就停止。

当在scanf中使用%s时

  • 跳过空白字符,直到遇到一个非空白字符开始读取,之后直到遇到一个非数字字符之后停止读取。这意味着将会读取一个单词
  • 如果使用了字段宽度,则在读取到字段宽度和非空白字符哪个先到就停止。

当在scanf中使用%c时

  • 平等对待所有输入,不跳过空白字符

在printf中使用*修饰符

  • 使用变量来制定字段宽度和精度

 

  1. #include<stdio.h> 
  2.  
  3. int main(void){ 
  4.    int num = 256; 
  5.    double d = 256.3; 
  6.    int precision; 
  7.    int width; 
  8.  
  9.    printf("Enter the width:\n"); 
  10.    scanf("%d",&width); 
  11.    printf("%*.d\n",width,num); 
  12.    printf("Enter the width and precision:\n"); 
  13.    scanf("%d%d",&width,&precision);//可以同时指定宽度和精度! 
  14.    printf("%*.*f\n",width,precision,d); 
  15.  
  16.    return 0; 

在scanf中使用*修饰符

  • 跳过相应的输入项目
  1. #include<stdio.h> 
  2.  
  3. int main(void){ 
  4.     int last; 
  5.     scanf("%*d %*d %d",&last); 
  6.     printf("%d",last); 
  7.     return 0;