Csprintf():只扫描浮点数数组中的第一个值



我可以将浮点数组转换为字符串吗?我不关心点是否作为字符串值。我只需要把数字分成字符串。

到目前为止我已经做过了

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';

等等…

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

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]!='';i++) {
            printf("%cn", str[i]);
        }
    }
}

你可以使用strcat()来连接字符串,如果你想把所有的字符串连接成一个字符串。

解决方案:

#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;
}

相关内容

最新更新