반응형
별도의 부분 문자열을 만들지 않고 C- 문자열의 특정 부분 만 인쇄 할 수 있습니까?
다음이 있다고 가정합니다.
char* string = "Hello, how are you?";
이 문자열의 마지막 5 바이트 만 인쇄 할 수 있습니까? 처음 5 바이트는 어떻습니까? printf
이것을 허용하는 변형 이 있습니까?
이 문자열의 마지막 5 바이트 만 인쇄 할 수 있습니까?
예, 마지막 5 번째 문자에 포인터를 전달하면됩니다. 이를 통해 확인할 수 있습니다 string + strlen(string) - 5
.
처음 5 바이트는 어떻습니까?
정밀도 지정자를 사용하십시오. %.5s
#include <stdio.h>
#include <string.h>
char* string = "Hello, how are you?";
int main() {
/* print at most the first five characters (safe to use on short strings) */
printf("(%.5s)\n", string);
/* print last five characters (dangerous on short strings) */
printf("(%s)\n", string + strlen(string) - 5);
int n = 3;
/* print at most first three characters (safe) */
printf("(%.*s)\n", n, string);
/* print last three characters (dangerous on short strings) */
printf("(%s)\n", string + strlen(string) - n);
return 0;
}
예, 해당 문자열의 마지막 5 바이트는 다음을 사용하여 수행 할 수 있습니다.
printf ("%s\n", &(string[strlen (string) - 5]));
처음 5 개는 다음으로 수행 할 수 있습니다.
printf ("%.5s\n", string);
둘을 결합하여 문자열 내에서 하위 문자열을 얻을 수도 있습니다. 단어 how
는 다음과 같이 인쇄 할 수 있습니다.
printf ("%.3s\n", &(string[strlen (string) + 7]));
이 작업을 수행 할 수 있도록 문자열이 충분히 긴지주의해야합니다. 한 문자 문자열의 마지막 5자를 인쇄하면 색인이에서 끝나기 때문에 정의되지 않은 동작이 발생 -4
합니다. 즉,이를 시도하기 전에 문자열 길이를 확인하십시오.
두 가지 솔루션 :
같은 길이의 예측 가능한 문자열이 주어지면 날짜를 예로 사용하고 HH : MM : SS.DDDDDDD로 분할하도록 요청합니다.
char date[14] = "2359591234567";
[1] 읽기 쉬운 구현 :
char hh[3] = {0};
char mm[3] = {0};
char ss[3] = {0};
char dec[8] = {0};
strncpy ( hh, date, 2 );
strncpy ( mm, date+2, 2 );
strncpy ( ss, date+4, 2 );
strncpy ( dec, date+6, 7 );
printf("%s:%s:%s.%s\n", hh, mm, ss, dec);
[2] 간단한 구현 :
어느 한 쪽:
printf("%.2s:%.2s:%.2s.%.7s\n", date, date+2, date+4, date+6);
또는:
printf("%2.2s:%2.2s:%2.2s.%7.7s\n", date, date+2, date+4, date+6);
작동해야합니다.
printf 대신-sprintf를 사용하고 버퍼에 복사 할 수 있습니다. 또한 예측할 수없는 동작을 피하기 위해 올바른 길이를 확인합니다.
두 경우 모두 출력은 다음과 같습니다.
23:59:59.1234567
반응형
'UFO ET IT' 카테고리의 다른 글
인덱스 키 열 VS 인덱스 포함 열 (0) | 2020.11.23 |
---|---|
Mockito : 일반 매개 변수로 확인 (0) | 2020.11.23 |
성가신 "경고 : 이미 초기화 된 상수"메시지에 대한 솔루션 (0) | 2020.11.23 |
프로덕션에서 Entity Framework (코드 우선) 마이그레이션 사용 (0) | 2020.11.23 |
localStorage를 사용할 수 있는지 확인 (0) | 2020.11.23 |