• C连载23-输入输出中星号的用法


    一、scanf()的返回值

    • scanf()函数会返回成功读取的项数
    • 如果没有读取任何项,而且需要读取的是一个数字,但是却读取了非数字,那么就会返回0
    • 当检测到“文件结尾”的时候,会返回EOF(EOF是头文件stdio.h中的特殊值,通常用#define指令把EOF定义为-1

    二、printf()和scanf()的*修饰符

    • 首先看一下printf的*的用法
    #include<stdio.h>
    #pragma warning(disable:4996)
    int D22_1_varwid(void) {
    	unsigned width, precision;
    	int number = 256;
    	double weight = 242.5;
    
    	printf("Enter a field 
    ");
    	scanf("%d", &width);
    	printf("The number is :%*d:
    ", width, number);
    	printf("Now enter a width and a precision.
    ");
    	scanf("%d %d", &width, &precision);
    	printf("Weight = %*.*f
    ", width, precision, weight);
    	printf("Done!
    ");
    
    	return 0;
    }
    

    23.1

    • 从上面的代码可以看的出来*其实用来指定宽度,还支持小数点后面的用法,表示保留几位小数
    • 下面我们再看一下scanf()的用法,它和printf()稍有不同
    #include<stdio.h>
    #pragma warning(disable:4996)
    int D23_1_skip2(void) {
    	int n;
    
    	printf("Please enter three integers:
    ");
    	scanf("%*d %*d %d", &n);
    	printf("The last integer was %d
    ", n);
    
    	return 0;
    }
    

    23.2

    • 把*放到%和转换字符之间,就会使的scanf()跳过相应的输出项,从上面的代码中可以看出,直接跳过了前两个整数。

    三、关键概念

    • 字符串存储在一个数组中,都是以一个叫做空字符的隐藏字符结尾
    • 最好用#indefine定义数字常量,用const关键字声明的变量为只读变量。
    • 空白字符(制表符、空格和换行符)在scanf()处理输入时,除了%c模式(读取一个字符),scanf()在读取输入的时候会跳非空白字符前的所有空白字符,直到遇到空白字符或者与转换说明不相符的字符。

    四、总结

    • 字符串是一个处理单元的字符,C语言中会以空字符(ASCII码就是0)结尾的一系列字符。
    • strlen()函数(在string.h中),可以用于获取字符串的长度(末尾的空字符不计入在内)。
    • C预处理器为预处理器指令(以#符号开始)查找源代码程序,并且在开始编译程序之前,处理它们。
    • 处理器根据#include指令把另一个文件中的内容添加到该指令所在的位置。#define指令可以创建明示变量(符号常量)
    • limits.h和float.h头文件中用#define定义了一组表示整型和浮点型不同属性的符号常量。另外还可以使用const限定符来创建定义后不能修改的变量。

    三、源码:

  • 相关阅读:
    leetcode 7.删除有序数组中的重复项
    python 插入排序
    C# 异常处理
    C# 正则表达式
    C# 特性(Attribute)
    C# 预处理器指令
    C# 命名空间(Namespace)
    C# 文件的输入与输出
    C# 反射(Reflection)
    Python入门示例系列37 常用函数
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/13688616.html
Copyright © 2020-2023  润新知