首页 > 解决方案 > 在 Visual Studio 中使用 printf 时不显示文本

问题描述

我是编程新手,所以这可能是一个简单的问题。我使用视觉工作室。当我输入任何内容然后按 Enter 时,字符串不显示。我试图做十六进制 - >十进制,但现在我删除了其余的代码。

int main()
{
    char liczba[5];
    printf("Write hex numb: ");
    scanf_s("%s", liczba , 1u);
    printf(" %s ",  liczba);

    return 0;
}

标签: c

解决方案


我查了文档。它指出,与 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 将不会显示任何内容。


推荐阅读