我要做的是通过网络发送字符串。关键是接收字符串的服务器必须将所有数字的总和发送回去。所以我认为最简单的方法是取字符串并将其放在一个浮点数组中(如果整数进入那里并不重要,因为最终的总和将是一个浮点数)。
不幸的是,我不知道该怎么做,或者更确切地说,如何处理它。我如何从一个字符串中取1到1的数字(比方说,每个数字用空格分隔)?必须有一些功能,但我找不到它。
unix下的语言是普通的C.
答案 0 :(得分:4)
使用strtod()
将字符串中的第一个数字转换为double
。将它添加到您的总和中,然后使用endptr
返回值参数来确定是否需要转换另一个,如果是,则从哪里转换。迭代直到处理完整个字符串。
strtod()
的原型是:
double strtod(const char *nptr, char **endptr);
另请注意,将整数视为浮点时可能会遇到精度问题。
答案 1 :(得分:1)
您可以使用fscanf从流中读取,就像使用scanf从stdin读取一样。
答案 2 :(得分:0)
您可以使用strtok
分割字符串,atof
将其转换为浮动。
char* p;
float farr[100];
int i = 0;
//str is your incoming string
p = strtok(str," ");
while (p != NULL)
{
farr[i] = atof(p);
p = strtok(NULL, " ");
}
我刚刚在在线编译器中运行它 - http://ideone.com/b3PNTr
答案 3 :(得分:-1)
您可以使用sscanf()从字符串中读取格式化的输入 你可以使用像
这样的东西string=strtok(input," ")
while(string!=NULL)
{ sscanf(string,"%f",&a[i]);
i++;
string=strtok(NULL," ");
}
在循环中。您甚至可以使用atof()而不是使用带有%f的sscanf()。