2010-04-26 2 views
0

"Precision can be omitted or be any of:"제목 아래에있는 정보를 살펴보십시오.printf()에서 여러 개의 정밀도를 사용하려면 어떻게해야합니까?

예 : printf("%.*s", 3, "abcdef"); 작품, 출력 :

printf("%.*s, %.*s", 3, 3, "abcdef", "xyz123"); 

: abc 지금

(. 문자열의 나머지 부분을 절단), 나는 (절단) 형식의 여러 매개 변수 문자열을 가지고 싶습니다 그러나 프로그램이 충돌합니다.

올바른 구문은 무엇입니까?

감사합니다.

답변

5

어쩌면 주문을 변경해야합니까? 당신이 변수로 필요하지 않은 경우 정밀도를 하드 코딩 할 수있는 방법으로

printf("%.*s, %.*s", 3, "abcdef", 3, "xyz123"); 

:

printf("%.3s, %.3s", "abcdef", "xyz123"); 

(스티븐 캐논 친절 수정 오타)

+1

어떻게 이것이 5 개의 업 보트를 얻었습니까? 작동하지 않습니다. 그것은 컴파일 할 때 경고를 주며, 실행될 때 segfault를줍니다. 하드 코딩 된 것도 작동하지 않습니다. –

+0

Jack, 형식 문자열을 편집하여 올바르게 컴파일하고 작동하도록했습니다. –

+0

고마워, 그냥 신속하게 다른 코드를 복사하고 붙여 넣기를 기반으로 오타되었습니다, 미안 해요 :) – Jack

2

당신처럼하고 싶은 이 :

printf("%.*s, %.*s", 3, "abcdef", 3, "xyz123"); 

형식 인수는 형식 지정자와 같은 순서 여야합니다.

+0

그 작동하지 않습니다; 여전히 두 개의 형식 문자열이 있습니다. –

+0

고정 (원래 게시물의 행을 복사했는데 부적절하게 배치 된 큰 따옴표에주의하지 않았습니다.) – mipadi

1
printf("%.*s, %.*s",3,"abcdef",3,"xyz123"); 
관련 문제