C배열 원소로 문자열을 저장하는 방법이 궁금합니다

2차원 배열을 만들어 원소 하나 하나에 스트링을 저장하고 싶습니다. 제 코드는 출력은 잘 되는데 컴파일하면 경고를 냅니다. 경고 없이 배열을 만드려면 어떻게 해야되나요?

소스코드

char (*a[2])[14];
a[0]="blah";
a[1]="hmm";

printf(a[1]); //잘 출력됨

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    1. 한 번 설정 한 후 스트링을 바꾸고 싶지 않다면(const) :

    const char *a[2]; //const char 포인터를 원소로 갖는 길이가 2인 배열
    a[0] = "blah"; //static 문자열의 주소를 저장 - 메모리의 read-only영역을 가리킴
    a[1] = "hmm";
    
    a[0][1] = 'a'//에러
    

    2. 설정 한 후 값을 바꾸고 싶다면

    char a[2][14]; //일반적인 2차원 배열 설정
    strcpy(a[0], "blah"); //stcpy로 복사
    strcpy(a[1], "hmm");
    
    a[0][1] = 'a'//ok
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.