c - 在 Visual Studio 中使用 printf 时不显示文本
问题描述
我是编程新手,所以这可能是一个简单的问题。我使用视觉工作室。当我输入任何内容然后按 Enter 时,字符串不显示。我试图做十六进制 - >十进制,但现在我删除了其余的代码。
int main()
{
char liczba[5];
printf("Write hex numb: ");
scanf_s("%s", liczba , 1u);
printf(" %s ", liczba);
return 0;
}
解决方案
我查了文档。它指出,与 scanf 相比,scanf_s 缓冲区大小需要为格式说明符 c、C、s 和 S 指定作为通常参数之后的第二个参数。一个例子:
char str[1024];
printf("Input text: ");
scanf_s("%s", str, 1024);
该文档还指出,在潜在的缓冲区溢出的情况下,不会将任何内容写入缓冲区。
如果您不使用“1u”,您的代码可以正常工作。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char liczba[5];
int BUFFSIZE = 1024;
printf("Write hex numb: ");
scanf_s("%s", liczba , BUFFSIZE);
printf(" %s ", liczba);
return 0;
}
我为缓冲区大小创建了一个整数,但您也可以使用:
scanf_s("%s", liczba , 1024);
并且缓冲区的大小也可以小于 1024。例如它可以是 5,但是如果您输入一个字符串,"QWERTYUIOP"
您的 printf 将不会显示任何内容。
推荐阅读
- c++ - 使用 VCPKG 在 Visual Studio 上安装 geos
- amazon-web-services - 将位置历史记录 REST API 转换为 AWS 位置 ping 的“云原生”方式是什么?
- c# - .Net Core OData 以不同方式序列化日期时间
- asp.net - 如何编写一个存储过程/函数来返回一个对象列表,该列表还包含一个列表作为其属性给 C#
- go - 与solidity 函数相比,Go ABI.Pack 参数类型应该是什么样的?
- javascript - AdminBSBMaterialDesign-Bootstrap-select data-live-search 最近在 Google Chrome 上没有响应
- javascript - 更新 Redux 状态问题?
- javascript - 创建一个 html 页面以从 pancakeswap 转换自定义加密货币的值
- python - 如何在 Python 中找到具有非明显文件类型的 url 中的图像的文件类型
- r - 从字符日期字段 R 中提取年份和月份