printf函数和scanf函数

写在前面:

在刚开始学习C语言的时候,用的比较多的两个库函数就是printf函数和scanf函数,但是好多同学在用的时候经常会犯一些没有注意到的小错误,但是有的时候这些小错误就是致命的.下来我们一起学习学习这两个C语言中的库函数.

一.printf函数

函数声明: 发送格式化输出到标准输出stdout

int printf(const char *format, ...)

函数返回值:如果成功则返回输出的字符总数,否则返回一个负数.

printf函数的调用格式为: printf("格式化字符串",参量表); 

#include <stdio.h>

int main(){
    int a = 10;
    printf("%d\n",a);
}

#include <stdio.h>
int main()
{
   char ch = 'A';
   char str[20] = "www.runoob.com";
   float flt = 10.234;
   int no = 150;
   double dbl = 20.123456;
   printf("字符为 %c \n", ch);
   printf("字符串为 %s \n" , str);
   printf("浮点数为 %f \n", flt);
   printf("整数为 %d\n" , no);
   printf("双精度值为 %lf \n", dbl);
   printf("八进制值为 %o \n", no);
   printf("十六进制值为 %x \n", no);
   return 0;
}

 规定符:

  • %d 十进制有符号整数
  • %u 十进制无符号整数
  • %f 浮点数
  • %s 字符串
  • %c 单个字符
  • %p 指针的值
  • %e 指数形式的浮点数
  • %x, %X 无符号以十六进制表示的整数
  • %o 无符号以八进制表示的整数
  • %g 把输出的值按照 %e 或者 %f 类型中输出长度较小的方式输出
  • %p 输出地址符
  • %lu 32位无符号整数
  • %llu 64位无符号整数

二.scanf函数

函数声明:从标准输入stdin读取格式化输入.

int scanf(const char* format,...);

scanf函数的调用格式为: scanf("格式化字符串",参量表); 

 函数返回值: 如果成功则返回成功匹配和赋值的个数.如果到达文件末尾或发生读错误,则返回EOF.

format:格式化字符串,包含以下各项中的一个或多个字符:空格字符,非空格字符和format说明符.

scanf类型说明符:

很多同学刚开始学习scanf函数的时候,在vs编译器上经常会报下面的错误.很多同学会误以为是自己代码哪里存在语法错误.

This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 

翻译下来就是: 此函数或变量可能不安全。考虑使用scanf_s代替。要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS警告。

其实是vs编译器认为scanf函数不安全,需要替换为scanf_s使用.或者在文件的第一行进行宏定义:

#define _CRT_SECURE_NO_WARNINGS 1

实例1:

#include<stdio.h>
int main(void) { 
    int a,b,c; 
 
    printf("请输入三个数字:");
    scanf_s("%d%d%d",&a,&b,&c); 
    printf("%d,%d,%d\n",a,b,c);
    return 0; 
}

解析:

  1. &a,&b,&c中的&是取地址运算符,分别获取这三个变量的内存地址
  2. %d%d%d是按照十进制格式输入三个数值.输入时,在两个数据之间可以用一个或多个空格,tab键,回车键分割. 
  3. 注意:如果使用,分隔输入的%d,则相应的输入也需要添加,.前后的形式必须一,否则就会出错

 输入数据时格式和格式化字符串不一致时就会出错,这里应该特别注意.

 实例2:

#include<stdio.h>
int main(void){
    char a,b,c;
 
    printf("请输入三个字符:");
    scanf_s("%c%c%c",&a,&b,&c); 
    printf("%c,%c,%c\n", a,b,c);
    return 0;
}

注意:在用%c输入时,空格和"转义字符"均作为有效字符.

实例3:

注意:在较新版本vs中输入字符串时,需要给scanf函数指定一个参数,告诉编译器预留多大的空间来存储字符串sizeof()或直接给定一个数字大小,够用就可以.否则就会无输出程序直接结束.

#include <stdio.h>

int main(){
	char str1[20], str2[30];

	printf("请输入用户名:");
	scanf_s("%s", str1,20); //20可以替换为sizeof(str1)

	printf("请输入您的网站:");
	scanf_s("%s", str2,20); //20可以替换为sizeof(str2)

	printf("输入的用户名:%s\n", str1);
	printf("输入的网站:%s", str2);

	return(0);
}

 没有失败,只是暂时的不成功.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值