Day 3
复习
编译器:VS2019;
学习资料 1、B站视频(P18)见链接 【求知讲堂2021C语言/C++视频99天完整版(不断更新中)学完可就业-哔哩哔哩】https://b23.tv/4DzQDY;
二维数组
练习
#include<stdio.h>
int main(void)
{
;
新学习
- puts、gets、stract函数
- 用法puts( st)、gets( st )、stract( st1,st2)
static char st1[30]="Your name is ";
int st2[20];
printf("input your name :\n");
gets(st2);
strcat(st1, st2);
puts(st1);
return 0;
-
scanf与scanf_s的区别 3.1. scanf语法
int scanf(
const char *format [,
argument]...
);
- 参数
format 格式控制字符串; argument 可选参数; - 返回值
返回已成功转换和分配的字段数量;返回值不包括已读取但未分配的字段。 返回值为 0 表示没有分配任何字段。 如果 format 是 NULL 指针,则调用无效的参数处理程序,如果允许执行继续,这些函数将返回 EOF ,并 errno 设置为 EINVAL 。 - 执行
函数 scanf 从标准输入流中读取数据 ,将数据写入 给定的位置 argument 。 - 注
使用 读取字符串时格式不正确的输入很容易导致缓冲区 scanf %s 溢出。 - 关于返回值的警告
修改
#pragma warning (disable: 4996)
char st[15];
printf("input string :\n");
if(scanf("%s", st)==0)
return;
printf("%s\n", st);
3.2. scanf_s语法
int scanf_s(
const char *format [,
argument]...
);
- 参数
format:格式控制字符串。 argument:可选参数。 - 返回值
返回已成功转换和分配的字段数。 返回值不包括已读取但未分配的字段。 如果返回值为0,则表示未分配任何字段。 对于错误,返回值为 EOF ; 或者,如果在第一次尝试读取字符时找到文件尾字符或字符串末尾字符,则为。 如果 format 是 NULL 指针,则会调用无效参数处理程序,如 参数验证中所述。 如果允许执行继续,则 scanf_s wscanf_s 返回 EOF 并将设置 errno 为 EINVAL 。 - 执行
scanf_s 函数从标准输入流中读取数据, 并将其写入到中 argument 。 每个都 argument 必须是指向与中的类型说明符相对应的变量类型的指针 format 。 - 注
与 scanf , scanf_s 要求你为一些参数指定缓冲区大小。 指定所有、、、 c C s S 或字符串控制集参数的大小 [] 。 以字符作为附加参数传递的缓冲区大小。 它紧跟在指向缓冲区或变量的指针后面。 例如,如果您正在读取一个字符串,则将传递该字符串的缓冲区大小,如下所示:
char s[10];
scanf_s("%9s", s, (unsigned)_countof(s));
- %s、%hs
参考: scanf https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/reference/scanf-scanf-l-wscanf-wscanf-l?view=msvc-160 scanf_s https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l?view=msvc-160
|