在C中操作char数组后的随机符号

时间:2013-02-17 06:51:19

标签: c arrays

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。

1 个答案:

答案 0 :(得分:2)

在调用'\0'

之前,

tmp附加到strcpy()字符串