sprintf():只扫描float数组中的第一个值

时间:2013-04-07 20:56:29

标签: c

我可以将float数组转换为字符串吗?我不在乎这个点是否为字符串值。我只需要将数字分成字符串。

到目前为止我已经完成了这个

void H(float *suma, int k){
int i=0;
char str[200]  = "";

    sprintf(str, "%.2f", *suma);


for(i=0;i<strlen(suma);i++) {
    printf("%c", str[i]);
}
}

但是它一直只转换我的浮点数组中的第一个值。我希望我说清楚。如果不是这里是我的问题的一个例子。

array[0]= 123.45;
array[1]= 543.21;

但我需要它

  string[0]='1';
  string[1]='2';
  string[2]='3';
  string[3]='.';
  string[4]='4';
  string[5]='5';
  string[6]='5';
  string[7]='4';

等...

2 个答案:

答案 0 :(得分:1)

这是一个解决方案:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void H(float *suma, int k)
{
    int i,j;
    char str[200]  = "";
    for(j=0; j<k; j++)
    {
        sprintf(str, "%.2f", suma[j]);

        for(i=0;i<strlen(str);i++)
        {
            printf("%c", str[i]);
        }
        printf("\n");
    }
}

int main ()
{
    float b[]={123.432,213.432,12.2,31.3,13.4};
    H(b,5);
    system("pause");
    return 0;
}

答案 1 :(得分:1)

如果你想以字符串格式打印所有数组的列表,这里是解决方案(我假设k是浮点数组的长度):

void H(float *suma, int k){
    int i=0, j;
    char str[200]  = "";

    for(j=0;j<k;j++){
        sprintf(str, "%.2f", *(suma+j));
        for(i=0;str[i]!='\0';i++) {
            printf("%c\n", str[i]);
        }
    }
}

如果您希望将所有字符串放在一个字符串中,则可以使用strcat()来连接字符串。