Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取(变量)_C++_Gets - Fatal编程技术网

C++ 获取(变量)

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()进行格

有人能告诉我为什么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()进行格式化读取


顺便说一下,由于您似乎使用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++流和 STD::String 。C++流比C流更友好类型。 第四,

fflush
在输入流上不起作用。
fflush
函数用于将流缓冲区中的剩余数据写入输出流。在C++中,有一个方法,Is><代码>,它将忽略传入字符,直到读取新行(默认)或指定字符(或达到限制)。
希望有帮助。

首先,
get
函数用于读取字符串或文本,而不是数字

其次,不要使用
get
,因为它有缓冲区溢出错误。有关更多信息,请参阅。功能
fgets
是一种更安全的选择

第三,您可能想切换到C++流和 STD::String 。C++流比C流更友好类型。 第四,

fflush
在输入流上不起作用。
fflush
函数用于将流缓冲区中的剩余数据写入输出流。在C++中,有一个方法,Is><代码>,它将忽略传入字符,直到读取新行(默认)或指定字符(或达到限制)。
希望能有所帮助。

一些朋友告诉我printf比cout更好,因为在知道为什么要使用printf之前,您可以使用printfUse cout对参数进行更好的“排序”。这对初学者来说更安全。printf的格式参数现在已经被好的编译器检查过了,cout的缺陷也有很好的证明。不管PrtTf是否存在,都是标准C++的一部分,所以它是毫无意义的。一些朋友告诉我,PrtfF会比CUT更好,因为你可以更好地用PrtFraceCUT“排序”参数,直到你知道为什么要使用Prtff。这对初学者来说更安全。printf的格式参数现在已经被好的编译器检查过了,cout的缺陷也有很好的证明。不管PrtTf是否存在,都是标准C++的一部分,所以它是毫无意义的遁词。“永远不要使用<代码> GETSH()<代码>。”——<代码>获取文档。代码>获取是一个陷阱。没有理由使用它,而且我 char* gets(char *s);