麻烦使用scanf与char数组

时间:2014-03-12 15:48:00

标签: c scanf arrays

我是一名学习C的学生,(​​我以前的经验都是python),我在调试程序时遇到问题。以下部分让我感到困惑 - 我相信我错误地使用了scanf或printf(我必须使用这两个,没有其他功能。)

目的是首先扫描这个字符串,然后将它传递给函数做一些工作,但看起来它在扫描时失败。

#include "stdio.h"

void main(){
    char hexInput[100];
     printf("enter the hexidecimal to be converted");
     scanf_s("%s",hexInput);
     printf("%s\n",hexInput);
}

以上打印为空

scanf_s("%s",hexInput);
printf("%s\n",hexInput);

打印一个空行

scanf_s("%s",hexInput);
printf("%s",hexInput);

什么都不打印。

非常感谢任何指导。通常我一直使用的输入是字符和数字的组合(项目处理十六进制字符串),但任何字符串都应该使用它。我已经非常广泛地通过网络寻求解决方案,我确信这是显而易见的,但我还没有找到它。

我一直在使用Visual Studio 2008进行编译和调试。

1 个答案:

答案 0 :(得分:2)

scanf_s收到另一个参数。你缺少的是缓冲区大小。来自MSDN

  

与scanf和wscanf不同,scanf_s和wscanf_s要求为所有包含在[]中的c,C,s,S或字符串控件集的输入参数指定缓冲区大小。字符的缓冲区大小作为附加参数传递,紧跟在指向缓冲区或变量的指针之后。

所以,试试类似:

#include "stdio.h"

void main(){
    char hexInput[100];
    printf("enter the hexidecimal to be converted");
    scanf_s("%s",hexInput, 100);
    printf("%s\n",hexInput);
}