다음은 char double[] = "1.2345678";
이므로 .
다음에 4 위 및 그 이후의 모든 자릿수를이 char *
에 자르면 즉, "1.234"
이됩니다.숯의 끝 부분 다듬기 *
답변
한 가지 확실한 해결책과 같이, NUL
하여 문자를 대체하는 것입니다 : '.'
char *foo = strdup("1.2345678"); // FIXME: check return value
foo[5] = '\0';
참고 정확한 위치가 다를 수 있음을, 숫자가 앞에 나타날 얼마나 많은에 depening 캐릭터. ,
char *p = foo;
int i = 0;
int passed_dot = 0;
while (p && *p) {
if (*p == '.') passed_dot = 1;
if (passed_dot) i++;
if (i == 4) {
*p = '\0';
break;
}
p++;
}
더 많은 RAM을 살 여유가없는 경우 : '.'문자열 foo
이상
으로 반복, 당신은 건너 경우 passed_dot
의 상태를 변경하고, NUL
사 후 더 많은 문자를 삽입
new_str = strdup(foo); // and don't forget to check for NULL
free(foo);
이것은 추한 것입니다. 아직도 메모리에 나머지 자릿수가 있습니다 ... –
@Cobra_Fast : 좋은 힌트! 내 대답을 편집했습니다. – Philip
OP는 자신의 문자열이 동적으로 할당 된 위치를 말하지 않습니다. 스택 버퍼 일 수 있습니다. 이 경우, nul을 지나서 chars 메모리를 재사용하는 현명한 방법은 없다. 문자열이 동적으로 할당 된 경우에도 원래 메모리를 확보 할 때 메모리를 절약 할 때 메모리를 절약 할 때 메모리 사용량이 동적으로 할당 될 때 메모리 사용량이 정당화되는지 여부가 의심스러운 것 같습니다. – simonc
'.'
을 찾고 4 단계를 진행하고 문자열 종료 문자를 입력하십시오.
숫자가 점 뒤에 3 자리 미만인 경우 문자열 자판기를 직접 전달하지 마세요.
점을 쉽게 찾을 수 있도록 strchr
기능을 찾으십시오.
참고
: 당신은 메모리를 절약하기 위해 결과 문자열 및free()
예전를
strdup()
수 있습니다
char * double= "1.2345678";
은 문자열 리터럴을 선언합니다. 이것은 const이므로 직접 수정할 수 없습니다. 변경 가능한 문자열을 얻으려면, 당신은 다른 답변에 제안 후 NUL 문자를 삽입
char double[] = "1.2345678";
또는
char* double = strdup("1.2345678");
로 선언 할 수있다.
- 1. 숯의 끝 부분 잘라 내기 *
- 2. 숯의 증분
- 3. 숯의 위치를 알아내는 방법
- 4. 문자열 다듬기
- 5. 정규 표현식을 사용하여 문자열의 끝 부분 바꾸기
- 6. .NET에서 부분 문자열 일치의 끝 찾기.
- 7. 끝 부분 태그를 제거한 비누 응답
- 8. TCL 명령 - 문자열 다듬기
- 9. AVMutableComposition을 사용하여 비디오 다듬기
- 10. C++에서 문자열 다듬기
- 11. Windows의 글꼴 다듬기
- 12. 배열 다듬기 (DBI로 채움)
- 13. 모든 데이터베이스 필드 다듬기
- 14. 자바에서 문자열 다듬기
- 15. 배열 값 다듬기
- 16. 폴더의 모든 이미지 다듬기
- 17. sqlite3의 문자 다듬기
- 18. PHP에서 임시 사용을 위해 이미지 다듬기
- 19. REGEX를 사용하여 180자를 넘기 전에 문자열을 다듬기 |
- 20. 스크롤 끝/끝 감지
- 21. VS 2010에서 글꼴 다듬기 변경
- 22. iPhone에서 OpenGL ES의 라인 다듬기
- 23. 인터뷰 솔루션 - 갭 버퍼 다듬기
- 24. SWF 무비 클립의 프레임 다듬기
- 25. 이미지 크기 조정 및 다듬기
- 26. Perl : 여러 줄 레코드 다듬기
- 27. 프로그래밍 방식으로 글꼴 다듬기 제거
- 28. 모든 불필요한 세미콜론 (블록 끝 부분)을 제거하는 방법은 무엇입니까?
- 29. 문자열 데이터, SQLSRV의 오른쪽 끝 부분 PHP 드라이버 ("도넛 구멍")
- 30. regex 도움말 - 끝 부분에 AM/PM 부분 문자열이 필요합니다.
변수 이름으로 double을 사용하지 마십시오. 그것은 키워드입니다! – anishsane