我到处都环顾四周,几乎尝试了所有建议,无法解决任何问题。
这是我的代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(){
float a;
char *nums[3];
char str[5];
printf("Please enter a,b,c:");
scanf("%s",str);
int i=0;
char *p;
p = strtok (str,",");
while (p != NULL)
{
nums[i++] = p;
p = strtok (NULL, ",");
}
a=atof(nums[0]);
printf("%s\n",nums[0]);
printf("%f\n",a);
return 0;
}
在我弄清楚之后,math.h是稍后的事情。所以,如果我进入&#34; 1,2,3&#34;进入这个程序,我的打印陈述会告诉我&#34; 1&#34;然后&#34; 0.000&#34;,显然这对我来说是可以测试的,但是为什么我的价值在尝试转换为浮点后会消失?我需要使用1的值来稍后在我的程序中进行数学计算,但无论我尝试什么,我都无法获得该指针值,我只能打印出来,但是一旦我尝试将其搞砸了将其转换为我可以使用的类型。
答案 0 :(得分:4)
两个问题:
您nums
和str
数组太短。 nums
的大小至少应为3,而str
的大小应至少为6(“1,2,3”加上空字节),对于较大的数字,可能更多。
所以改为:
char *nums[3];
char str[20];
其次,你没有#include <stdlib.h>
,其中包含atof
的声明。如果没有声明,则假定返回int
。
修复数组大小和#include <stdlib.h>
,它应该可以正常工作。