2016-07-12 4 views
1

값이 문자열로 설정된 행렬 문제를 해결하는 방법. 나는 포인터를 사용하고 싶다.C 문자열 배열에 대한 포인터

"경고 : 호환되지 않는 포인터 유형에서 초기화 [-Wincompatible - 포인터 타입]"&country[2] 다섯 C의 배열에 대한 포인터를 반환하지 않기 때문에 당신은 경고를받을

char *country[]={"USA\n","UK\n","Chaina\n","Singapore\n","Scotland\n"}; 
for (int i =0; i <5; i++) { 
    printf("\n CHECK val=%s\n",country[i]);  
} 
char *(*cp)[5]=&country[2]; 
for (int i =0; i <3; i++) { 
    printf("\n POINTER val=%s\n",(*cp)[i]); 
} 
+2

중국 * ...... : | | –

+1

잉글랜드와 웨일즈 * (이 코멘트는 향후 2 년까지 작성) –

답변

4

다음은 경고입니다 문자열.

char **cp = &country[2]; 
for (int i = 0; i < 3 ; i++) { 
    printf("\n POINTER val=%s\n", cp[i]); 
} 

Demo.

참고 : 당신은 할 필요가 없습니다 간단한 char ** 포인터는 배열의 중간에 별칭을 만들 수 있기 때문에 그러나, 이러한 포인터가 필요하지 않습니다 double-spacing을 원하지 않는 경우 문자열 리터럴과 printf 형식 문자열 모두에 \n 문자가 필요합니다.

+0

대단히 감사합니다! – Flair

+0

@Flair 환영합니다! 이 질문에 대한 답변이 있으면 옆에있는 체크 표시를 클릭하여 대답을 수락하십시오. 이렇게하면 다른 사이트 방문자가 문제를 해결할 수 있고 Stack Overflow에서 새로운 배지를 얻을 수 있습니다. – dasblinkenlight

관련 문제