我是一名学习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进行编译和调试。
答案 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);
}