use*_*540 -4 c variables storage types
我想在一个名为X的变量中存储一个整数和一个String,然后显示它.
int X;
printf("enter a number or a name")
scanf("%d", &X);
printf("%d", X);
Run Code Online (Sandbox Code Playgroud)
显然我需要用String类型和int类型声明变量X,我该怎么做呢?谢谢
你不能这样做.诚然,你可以存储两种类型相同的变量-查找一个什么union
呢-但你不能给那些之一scanf()
和扫描或者一个字符串或一个数字.
声明X
为字符串,scanf()
对于字符串,然后用于strtol()
尝试从字符串中读取数字.如果strtol()
返回零并且 errno
已设置(最后一个很重要,因为strtol()
如果用户输入也会返回零0
),那么转换失败并且没有数字,所以你得到了一个名字.
在评论中,您(最终)表明了您要完成的任务:
我提示用户输入一个数字或单词exit退出该程序.
您错误地认为将字符串或整数存储到同一个变量中就是这样做的.事实并非如此.
这是一个大致的概述:
将一行输入读入字符串.使用fgets()
此.
检查输入行是否为字符串"exit"
.请记住,在字符串中fgets()
保留换行符(\n '\n'
); 你必须允许这样做.要比较字符串值,请使用strcmp()
.如果输入字符串匹配"exit"
,则退出程序.
如果字符串不是"exit"
,请检查它是否是整数 - 更准确地说,它是否是表示整数的字符序列.你可以用strtol()
它.例如,如果输入字符串是"123"
,则strtol()
返回该long
值123
. strtol()
还可以告诉您字符串表示的整数值是否超出范围,或者它是否完全代表整数值.如果输入是"foobar"
,或"-123"
,或决定您想要做什么""
.
您将需要仔细阅读所有这些功能的文档.
关键点在于,您需要两个变量,一个char
用于保存输入行的数组,以及一个整数(int
或long
),用于保存转换后的整数值(如果该字符串包含整数的表示形式).
(我不提供代码,因为坦率地说,这有点像家庭作业.)