2013-02-17 7 views
-3
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"에 쉼표마다 3 위 삽입하려고 C에서 char 배열을 조작 한 후 "5,002,052.11" 될 것이지만 나는 점점 대신 프로그램을 실행할 때 내가 뭘 기대하고 올바른 대답 플러스 무작위 기호 "5,002,052.11 @ {"임의의 문자

내가 정확한 문자 크기를 입력하면 char tmp [] 잘 작동합니다 알 수 있지만 작동하도록합니다. 어떤 숫자의 숫자와도.

gcc를 사용 중입니다.

답변

2

strcpy()

+0

하나를 호출하기 전에 tmp 문자열로 '\0'을 추가합니다. 전 i/j 쌍에 완전히 간격을두고 있습니다. 좋은 캐치. – WhozCraig

+0

@WhozCraig 감사합니다. OP는 이것을해야합니다 :'tmp [i] = '\ 0';'그는 끝났습니다. –

+1

그 메모에. OP는 to = P에있는 동안 경계 조건을 확인하기 위해 잘 작동하지 않을 수 있습니다. 나는 언제든지'tmp [20]'를 곧바로 안전 장치에 넣지 않을 것이다. – WhozCraig

관련 문제