我正在尝试使用strtok()
拆分字符串。我将浮点数作为字符串然后使用atof()
,我将它们转换为浮点数,然后将它们放入另一个数组中。至少我在努力。我的代码就像:
int main() {
float new[4];
char inp[16]={"0.2 0.5 0.3 0.7"};
const char s[2] = " ";
char *token;
int i=0,j;
token=strtok(inp,s);
new[i]=atof(token);
i++;
while( token != NULL )
{ token = strtok(NULL, s);
new[i]=atof(token);
i++;
}
for(j=0;j<4;j++)
printf("%f\n",new[j]);
}
但我得到的错误如下:
[Error] expected unqualified-id before 'new'
[Error] expected type-specifier before '[' token
[Error] expected type-specifier before '[' token
[Error] expected type-specifier before '[' token
为什么我会收到这些错误?我无法使它工作但逻辑是真的吗? 对不起英语和结构错误,我是新用户:)
答案 0 :(得分:0)
确保您使用的是C编译器而不是C ++编译器,否则您可能在命名varible new时遇到问题,因为它是一个关键字,例如在C语言中。
尽管如此,这些变化可以解决您的问题:
while( token != NULL ){
token = strtok(NULL, s);
if(token != NULL){
new[i]=atof(token);
i++;
}
}
那是因为while不会测试每条指令上的标记是否为NULL,只是在执行循环之前。所以令牌它已经是NULL,但程序试图做atof(令牌)导致问题
答案 1 :(得分:0)
以下代码:
atof()
返回double,而不是float strtok()
size_t
时值永远不会< 0,而不是int
类型现在提出的代码
#include <string.h> // strtok()
#include <stdio.h> // printf()
#include <stdlib.h> // strtof()
#define MAX_FLOATS 10
int main( void )
{
float arrayOfFloat[ MAX_FLOATS ];
char inp[]={"0.2 0.5 0.3 0.7"};
const char delimiter[] = " ";
char *token;
size_t i=0;
token=strtok( inp, delimiter );
while( token )
{
arrayOfFloat[i] = strtof( token, NULL );
i++;
token = strtok( NULL, delimiter );
}
for( size_t j=0; j<i; j++ )
printf("%f\n", arrayOfFloat[j]);
} // end function: main
运行建议代码的结果是:
0.200000
0.500000
0.300000
0.700000
答案 2 :(得分:-1)
很简单,只需将'new'更改为任何变量名即可[check sample]。真的不知道这是否是保留字,请相信我,这是造成您问题的原因。