-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를 사용 중입니다.
하나를 호출하기 전에
tmp
문자열로'\0'
을 추가합니다. 전 i/j 쌍에 완전히 간격을두고 있습니다. 좋은 캐치. – WhozCraig@WhozCraig 감사합니다. OP는 이것을해야합니다 :'tmp [i] = '\ 0';'그는 끝났습니다. –
그 메모에. OP는 to = P에있는 동안 경계 조건을 확인하기 위해 잘 작동하지 않을 수 있습니다. 나는 언제든지'tmp [20]'를 곧바로 안전 장치에 넣지 않을 것이다. – WhozCraig