Visual c++ VC++;读取可变长度字符*
我试图从用户输入中读取一个可变长度的字符*。我希望能够指定调用函数时要读取的字符串的长度Visual c++ VC++;读取可变长度字符*,visual-c++,pointers,memory-management,Visual C++,Pointers,Memory Management,我试图从用户输入中读取一个可变长度的字符*。我希望能够指定调用函数时要读取的字符串的长度 char *get_char(char *message, unsigned int size) { bool correct = false; char *value = (char*)calloc(size+1, sizeof(char)); cout << message; while(!correct) { int control = s
char *get_char(char *message, unsigned int size) {
bool correct = false;
char *value = (char*)calloc(size+1, sizeof(char));
cout << message;
while(!correct) {
int control = scanf_s("%s", value);
if (control == 1)
correct = true;
else
cout << "Enter a correct value!" <<endl
<< message;
while(cin.get() != '\n');
}
return value;
}
char*get\u char(char*消息,无符号整数大小){
布尔正确=错误;
char*value=(char*)calloc(size+1,sizeof(char));
不能您必须指定值的大小到scanf\u s
:
int control = scanf_s("%s", value, size);
这就是诀窍
有关如何使用该功能的示例,请参见scanf_s的
:
与scanf和wscanf不同,scanf\u s和wscanf\u s要求为c、c、s或类型的所有输入参数指定缓冲区大小[。缓冲区大小作为附加参数传递,紧跟在指向缓冲区或变量的指针之后
我在这里省略了MSDN描述的其余部分,因为在他们提供的示例中,他们使用scanf
而不是scanf_s
这是非常令人恼火的…您必须将值的大小指定为scanf_s
:
int control = scanf_s("%s", value, size);
这就是诀窍
有关如何使用该功能的示例,请参见scanf_s的
:
与scanf和wscanf不同,scanf\u s和wscanf\u s要求为c、c、s或类型的所有输入参数指定缓冲区大小[。缓冲区大小作为附加参数传递,紧跟在指向缓冲区或变量的指针之后
我在这里省略了MSDN描述的其余部分,因为在他们提供的示例中,他们使用了scanf
而不是scanf\u
这是非常令人恼火的