void coma(char* str){
int j, i = 0;
int size = strlen(str);
int commas = (size-3)/3;
int left = (size-3)%3;
char tmp[20];
for(j = 0; j<size; i++){
if(left || commas == 0){
tmp[i] = str[j++];
left--;
}else {
tmp[i] = ',';
left = 3;
commas--;
}
}
strcpy(str,tmp); }
int main(){
char str[0x100];
float x = 5002052.1111;
sprintf(str,"%.2f", x);
coma(str);
printf("%s\n",str); }
我试图在浮点数上每隔三个位置插入逗号,例如数字“5002052.1111”将是“5,002,052.11”,但是当我运行程序而不是得到我期望的结果时,我得到了正确的答案加上随机符号,如“5,002,052.11@ {"
我注意到,如果我将确切大小的数字放在 char tmp[] 中,它会正常工作,但我需要它来处理任何大小的数字。
我正在使用 gcc。