C++ 获取(变量)
有人能告诉我为什么GET(abc)与char[]一起工作,而与int不一起工作吗C++ 获取(变量),c++,gets,C++,Gets,有人能告诉我为什么GET(abc)与char[]一起工作,而与int不一起工作吗 int abc; char name[] = "lolrofl"; printf("Hello %s.\n",name); printf("\n >> "); fflush(stdin); gets (abc); printf("\n die zahl ist %i.\n",abc); system("Pause"); return(0); 因为它只读取字符。使用scanf()进行格
int abc;
char name[] = "lolrofl";
printf("Hello %s.\n",name);
printf("\n >> ");
fflush(stdin);
gets (abc);
printf("\n die zahl ist %i.\n",abc);
system("Pause");
return(0);
因为它只读取字符。使用scanf()进行格式化读取
顺便说一下,由于您似乎使用C++(或者至少您选择的标签如此),所以您可能应该尝试STD::CIN/STD::CUT.
< P>,因为它只读取字符。使用scanf()进行格式化读取顺便说一下,由于您似乎使用C++(或者至少您选择的标签如此),也许您应该尝试STD::CIN/STD::CUT.< /P> < P>原型:IS:/P> char*get(char*s); 请注意,该函数不只是读取单个字符并将其放在s中;它实际上将整个字符串读入s。但是,由于gets()不提供指定要读取的最大字符数的方法,因此它实际上可以将更多的字符读取到s中,而不是为s分配的字节数。因此,此函数是一个严重的问题,您永远不应该使用此函数。还有其他更安全的功能,允许您从用户处读取输入,如和
如果使用C++,则使用(STD::CUT、STD::OFROW、STD::ISTRAMAM、STD::FSULTH等)比使用这些其他函数更好地执行输入/输出。 函数get()非常危险,事实上,在我的中,我对它进行了升级,并警告不要使用它
的原型是: char*get(char*s); 请注意,该函数不只是读取单个字符并将其放在s中;它实际上将整个字符串读入s。但是,由于gets()不提供指定要读取的最大字符数的方法,因此它实际上可以将更多的字符读取到s中,而不是为s分配的字节数。因此,此函数是一个严重的问题,您永远不应该使用此函数。还有其他更安全的功能,允许您从用户处读取输入,如和如果使用C++,则使用(STD::CUT、STD::OFROW、STD::ISTRAMAM、STD::FSULTH等)比使用这些其他函数更好地执行输入/输出。
函数get()非常危险,事实上,在我的中,我对它进行了升级,并警告不要使用它 如果你看一下C参考,你的问题就会得到回答。我将为您粘贴它: char*get(char*str) 函数的作用是读取字符 从stdin加载到str中, 直到到达换行符或EOF。这个 换行符被翻译成 无效终止。的返回值 gets()是读入字符串,或NULL 如果有错误。注意,gets() 不执行边界检查,并且 因此,有可能超过str 类似(且更安全)的功能 包括边界检查,请参见fgets()
因此,您将无法将整个字符串转换为整数。如果您查看C参考,您的问题将得到回答。我将为您粘贴它: char*get(char*str) 函数的作用是读取字符 从stdin加载到str中, 直到到达换行符或EOF。这个 换行符被翻译成 无效终止。的返回值 gets()是读入字符串,或NULL 如果有错误。注意,gets() 不执行边界检查,并且 因此,有可能超过str 类似(且更安全)的功能 包括边界检查,请参见fgets()
因此,您将无法将整个字符串转换为整数。首先,
get
函数用于读取字符串或文本,而不是数字
其次,不要使用get
,因为它有缓冲区溢出错误。有关更多信息,请参阅。功能fgets
是一种更安全的选择
第三,您可能想切换到C++流和
在输入流上不起作用。fflush
函数用于将流缓冲区中的剩余数据写入输出流。在C++中,有一个方法,fflush
希望有帮助。
get
函数用于读取字符串或文本,而不是数字
其次,不要使用get
,因为它有缓冲区溢出错误。有关更多信息,请参阅。功能fgets
是一种更安全的选择
第三,您可能想切换到C++流和
在输入流上不起作用。fflush
函数用于将流缓冲区中的剩余数据写入输出流。在C++中,有一个方法,fflush
希望能有所帮助。