开发环境:
系统:windows10 X64 专业版
IDE:Microsoft Visual Studio 2022 community
语言:C
源代码如下:
/* praise1.c -- 使用不同类型的字符串 */
#include <stdio.h>
#include <string.h>
#define _CRT_SECURE_NO_WARNINGS
#define PRAISE "You are an extraordinary being."
int main(void)
{
char name[40];
printf("What's your name? ");
scanf_s("%s",name); // 使用scanf_s输入字符串,必须加字符串的长度
printf("Hello, %s.%s\n", name, PRAISE);
printf("%d\n", strlen(name));
return 0;
}
运行时输入参数就会卡住报错。
报错内容
然后停止后出现如下警告:
C6064 缺少“scanf_s”的整型参数(对应于转换说明符“2”)
C6054 可能没有为字符串“name”添加字符串零终止符。
C6328 大小不匹配: 已将“unsigned __int64”作为 _Param_(2) 传递,但需要使用“int”来调用“printf”。
原因:scanf_s()的变量是字符串时需要加入字符串长度
修改后代码如下:
#include <stdio.h>
#include <string.h>
#define _CRT_SECURE_NO_WARNINGS
#define PRAISE "You are an extraordinary being."
int main(void)
{
char name[40];
printf("What's your name? ");
scanf_s("%s",name,40); // 使用scanf_s输入字符串,必须加字符串的长度
printf("Hello, %s.%s\n", name, PRAISE);
printf("%d\n", strlen(name));
return 0;
}
这样就可以正常运行了。
版权声明:本文为qq_40365533原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。