-4
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);  }

浮動小数点数の 3 桁ごとにコンマを挿入しようとしています。 {"

数値の正確なサイズを char tmp[] に入れると正常に動作することに気付きましたが、任意のサイズの数値で動作する必要があります。

私はgccを使用しています。

4

1 に答える 1

2

呼び出す前に、文字列に追加'\0'しますtmpstrcpy()

于 2013-02-17T06:54:45.290 に答える