0

我正在尝试将字符串与数字(双)值和文本连接起来。

我当前的代码:

char nameLed[256];      //Nom de la led
char colorLed[256];     //La couleur de la led
char I_directLed[100];      //L'intensité direct que peut supporter la led
double U_directLed;     //La tension direct que peut supporter la led
char commentLed[256];   //Le commentaire sur la led
char chaineSaveLed[1000];//Chaine concaténé

GetCtrlVal(panel, TABPANEL_1_ST_Name, nameLed);             //Panel > Tab Champ
GetCtrlVal(panel, TABPANEL_1_ST_Color, colorLed);           //Panel > Tab Champ
GetCtrlVal(panel, TABPANEL_1_I_Direct_Led, &I_directLed);   //Panel > Tab Champ
GetCtrlVal(panel, TABPANEL_1_U_Led_Direct, &U_directLed);   //Panel > Tab Champ
GetCtrlVal(panel, TABPANEL_1_TXT_Comment, commentLed);      //Panel > Tab Champ

//Créer la chaine à enregistrer au format CSV
//Concaténation de chaine
strcat (chaineSaveLed, nameLed);
strcat (chaineSaveLed, ",");
strcat (chaineSaveLed, colorLed);
strcat (chaineSaveLed, ",");
strcat (chaineSaveLed, I_directLed);
strcat (chaineSaveLed, ",");
strcat (chaineSaveLed, U_directLed);
strcat (chaineSaveLed, ",");
strcat (chaineSaveLed, commentLed);
strcat (chaineSaveLed, "/n");

printf ("%s\n", chaineSaveLed);

我的问题出在“I_directLed”和“U_directLed”上。

我必须将双精度转换为字符。

谢谢你的帮助。

4

1 回答 1

1

如果我正确理解您的意思,最好的方法是使用 sprintf()。它允许您写入字符串并对其进行格式化,类似于 printf() 的工作方式。因此,例如,您可以将代码替换为:

//Define variables
char nameLed[256];   
char colorLed[256];    
char I_directLed[100];  
double U_directLed;   
char commentLed[256];  
char chaineSaveLed[1000];

//Get value from GUI
GetCtrlVal(panel, TABPANEL_1_ST_Name, nameLed);             
GetCtrlVal(panel, TABPANEL_1_ST_Color, colorLed);          
GetCtrlVal(panel, TABPANEL_1_I_Direct_Led, &I_directLed);  
GetCtrlVal(panel, TABPANEL_1_U_Led_Direct, &U_directLed);   
GetCtrlVal(panel, TABPANEL_1_TXT_Comment, commentLed);    

//Concatenates all of the given variables into the string chainSaveLed
sprintf(chaineSaveLed,"%s,%s,%s,%lf,%s\n",nameLed, colorLed, I_directLed, U_directLed, commentLed);

//Print output
printf ("%s\n", chaineSaveLed);
于 2018-02-02T14:58:24.450 回答