谁能告诉我为什么gets(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);发布于 2010-04-23 03:26:23
因为它只读字符。使用scanf()进行格式化读取。
顺便说一句,既然您似乎在使用C++ (或者至少您选择的标签是这样说的),也许您应该尝试std::cin/std::cout。
发布于 2010-04-23 03:33:50
如果你看一看C参考资料,你的问题就会得到回答。我将为您粘贴它:
字符串char *
( char *str );
gets()函数从stdin中读取字符并将它们加载到str中,直到到达换行符或EOF。换行符被转换为空终止。gets()的返回值是读入字符串,如果有错误,则返回值为NULL。请注意,get()不执行边界检查,因此有可能使str溢出。有关包含边界检查的类似(且更安全)函数,请参阅fgets()。
因此,您不能将整个字符串转换为整数。
发布于 2010-04-23 09:32:29
首先,gets函数用于读取字符串或文本,而不是数字。
其次,不要使用gets,因为它有缓冲区溢出错误。有关详细信息,请参阅C Language FAQ。函数fgets是一种更安全的选择。
第三,您可能希望切换到C++ streams和std::string。C++流比C流更具类型友好性。
第四,fflush在输入流上不起作用。fflush函数用于将流缓冲区中的剩余数据写入输出流。在C++中,有一个名为ignore的方法,它将忽略传入的字符,直到读取到换行符(默认)或指定的字符(或达到限制)。
希望这能有所帮助。
https://stackoverflow.com/questions/2693774
复制相似问题