scanf的语法并举例说明

——————————————————————scanf的语法并举例说明
scanf是C语言中的一个标准输入函数,用于获取用户输入的数据,并赋值给变量。
——————基本语法:
scanf(format, variables);
其中,format是格式控制字符串,用于指定输入数据的格式,variables是变量名,用于存储输入的数据。
规则:
1. scanf函数通过格式控制字符串来确定要读取的数据类型和数量,并根据格式控制字符串中的格式符进行匹配。
2. 格式控制字符串中可以包含空格、制表符(\t)和换行符,用于忽略输入数据中的空白字符。
3. 可以使用多个格式控制符来读取多个数据,各个格式控制符之间可以用空格、制表符和换行符(回车键)分隔。
4. 当格式控制字符串中的格式符与输入的数据不匹配时,scanf函数会将匹配失败的数据留在输入缓冲区中,下一次读取时会再次尝试读取。
5. 格式控制符中的 % 后面可以加上数字,表示最大字段宽度,即读取的字符数不会超过该数字。
6. 在读取字符数组或字符串时,需要注意数组长度或字符串长度要足够大,以容纳输入的数据。
  可以使用 % ns来指定最大字段宽度,其中n为数组或字符串长度。
7. 遇到空格、制表符或换行符时,scanf函数会将输入的数据视为结束。
8. 在读取字符数组或字符串时,可以使用 % [^\n]来指定读取到换行符之前的所有字符。
9. 换行符指的是:回车键用scanf要考虑越界,输入是否标准,而且还要注意一些字符不能读入,比如空格,/n,
  如果之后还有用到输入缓冲区的内容,可以用getchar等函数清理缓冲区
例如,以下代码示例读取一个整数和一个浮点数:
//#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//int main() 
//{
//    int n;
//    float i;
//    printf("Enter an integer: ");//integer整数
//    scanf("%d", &n);
//    printf("Enter a floating point number: ");//floating point number浮点数
//    scanf("%f", &i);
//    printf("You entered: %d and %.0f\n", n, i);//%.2f:保留两位小数(自带四舍五入)//%.0f也可以使用,399.98——>400
//    return 0;
//}
运行程序后,会提示用户逐个输入整数和浮点数,然后将输入的值打印出来。
在输入时,需要注意输入的数据类型要与格式控制字符串中的格式符匹配,否则可能发生错误。


换行符(回车键)
//#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//void main()
//{
//    char str[40];
//    printf("lnput a string:");
//    scanf("%[^\n]", str); 
//    puts(str);
//}//输入字符串,会在敲回车时停止打印
//当使用scanf("%c", &ch);来读取一个字符时,%c会读取第一个字符,并将其赋值给变量ch。%c会按照下列规则工作:
1. %c会跳过任何空白字符(如空格、制表符、换行符等)。
2. %c会读取输入中的下一个字符,并将其赋值给变量。
3. %c不会自动在输入后面加入空字符'\0'。
4. %c会将换行符('\n')当做普通字符读取,而不会自动跳过。
//#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//int main() 
//{
//    char ch;
//    printf("请输入一个字符:");
//    scanf("%c", &ch);
//    printf("您输入的字符是:%c\n", ch);
//    return 0;
//}//只打印输入的第一个字符


制表符
制表符\t表示8个空格符是不准确的,实际上制表符的作用是使光标定位到一个新的位置,
新位置之前的输出占用的列数为8的倍数,即将光标移动至最接近8倍的地方,使之后的输出从光标处开始进行。
1、当\t之前的字符所占输出列数在0~7时,将光标定位至第9列。
2、当\t之前的字符所占输出列数在8~15时,将光标定位至第17列
//#include<stdio.h>
//void main() {
//    printf("123456781234567812345678\n");   //line1
//        printf("\ta\n");                    //line2
//        printf("1234\ta\n");                //line3
//        printf("1234567\ta\n");             //line4
//        printf("12345678\ta\n");            //line5
//        printf("1234567812345\ta\n");       //line6
//        printf("123456781234567\ta\n");     //line7
//        printf("1234567812345678\ta\n");    //line8
//}
结果为:(a与1对齐)
123456781234567812345678
       a
1234    a
1234567 a
12345678        a
1234567812345   a
123456781234567 a
1234567812345678        a

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值