如何C处理之间的转换整数和人物?说你已经宣布为一个整数的变量和询问用户的数量,但他们输入一串来代替。会发生什么?

有帮助吗?

解决方案

用户输入被视为需要使用atoi或其他转换函数转换为int的字符串。如果字符串不能作为数字进行交互,Atoi将返回0,因为它包含字母或其他非数字字符。

您可以在MSDN上的atoi文档中阅读更多内容 - http://msdn.microsoft.com/en-us/library/yd5xkb5c(VS.80)的.aspx

其他提示

呃? 你总是输入一个字符串。然后解析将此字符串转换为数字,以各种方式(再次询问,采用默认值等)处理各种错误(溢出,不正确的字符等)。

另一件需要注意的是,在C中,字符和整数是“兼容的”。在某种程度上。任何字符都可以分配给int。反过来也有效,但如果整数值不适合char,你就会丢失信息。

char foo = 'a'; // The ascii value representation for lower-case 'a' is 97
int bar = foo; // bar now contains the value 97 
bar = 255; // 255 is 0x000000ff in hexadecimal
foo = bar; // foo now contains -1 (0xff) 
unsigned char foo2 = foo; // foo now contains 255 (0xff)

正如其他人已经指出,数据通常是作为一串--唯一的问题是,其功能是用于做阅读。如果你使用一GUI,该功能可能已经处理转化为整数和报告错误,并以适当的方式。如果你的工作与标准C时,它是一般更易于阅读的价值成一串(也许有 fgets() 然后转换。虽然 atoi() 可以使用,它很少是最好的选择;麻烦的是确定是否转化成功(以及生产零,因为用户输入合法代表的零)或没有。

一般来说,使用 strtol() 或其亲属(strtoul(), strtoll(), strtoull());换浮点的数字,使用 strtod() 或类似的功能。优势的整数,转换程序包括:

  • 可选择的基选择(例如,基10,或基10-hex,或基8-八,或上述任何使用标准的C公约(007八0x07为hex,7for decimal).
  • 可选的错误检测(由知道这里的转换停止)。

我去许多的这些功能规格(当我不看我的复制的实际C的标准)是的 POSIX 网站(其中包括C99功能)。它是以Unix为中心,而不是窗户为中心。

程序会崩溃,你需要调用atoi函数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top