다수의 문자열들을 배열에 담을려고 합니다.
그래서
char **a; *a= new char[10];
이렇게 하니까 초기화 어쩌구 저쩌구 하는데요..
어떤 방법이 있는지요...
머리를 굴려봐도 잘 모르겠어요..ㅠㅠ
^^
문자열이 n개가 들어 간다구 생각을 하시면.
size = sizeof(char *)*n; a = (char **)malloc( size );
그리고 개개의 문자열에 대해서 다시 한번 메모리 할당을 하셔야 하네요
a[0] = (char *)malloc( 문자열 크기 );
그런 다음에 strcpy(a[0],"문자열");
이러시면 될듯 한데 ^^
가자 해외로 ~ .. 돈 벌러.
포인터가 골치 아프시면 string과 vector를 쓰는 방법도 있습니다.
#include <string> #include <vector> int main(int argc, char* argv[]) { std::vector<std::string> v; while (*argv) v.push_back(*argv++); }
갯수가 고정 되어있다면
char* a[10]; a[0] = new char[100]; a[1] = new char[100]; ... a[9] = new char[100];
이렇게 하구요...
고정이 아니라면 doldori 님께서 제시해 주신 stl을 쓰는방법이 가장 편하고 좋을것 같네요.
http://www.korone.net QT 커뮤니티 사이트
문자(character)와 문자열(character row)
그러고 난후에 c에서 메모리를 어떻게 액서스 하고 값을 인출하는지를 공부하십시오.
character row? 첨들어보는 국적불명의 용어로군요.
다수의 문자열들을 배열에 담을려고 합니다. 그래서 char **a; *a= new char[10]; 이렇게 하니까 초기화 어쩌구 저쩌구 하는데요.. 어떤 방법이 있는지요... 머리를 굴려봐도 잘 모르겠어요..ㅠㅠ
char **a; a = new char[10][10];
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~ 나 한줄기 바람처럼..
크기가 고정되어 있고 c++을 사용하신다면 다음과 같이 사용하셔도 될 것 같습니다.
#define MAX_NUM 256 #define MAX_SIZE 256 char **str; str = new char*[MAX_NUM]; for(int i=0; i< MAX_NUM ;i++) { str[i] = new char[MAX_SIZE]; // initialized code }
string과 vector를 익혀두세요.
C 언어 사용자라면 포인터와 포인터의 포인터를 몸에 익히시고요. :)
char **a; a = new char[10][10]; 식으로 쓰셔야 하는걸텐데요..
char (*a)[10] = new char[5][10];
나중에 고칠 필요가 없는 문자열이라면...
char **strs; strs = new char*[3]; strs[0] = "str1"; strs[1] = "str2"; strs[2] = "str3";
와 같이 만들 수도 있습니다.
차라리char *strs[] = { "str1", "str2", "str3" };
char *strs[] = { "str1", "str2", "str3" };
제가 해볼땐 에러가 안나는데요?
포인터를 초기화하지 않고 사용했다는 경고가 나왔을 듯 하네요.
숙제하시면서 포인터를 이해하기 싫으시면 stl의 vector나 string 쓰시는게 가장 속편한 방법입니다. 그런식이면 차라리 java를 쓰는것도 좋은 방법이죠.
님ㅎ 즐~
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
^^문자열이 n개가 들어 간다구 생각을 하시면. siz
^^
문자열이 n개가 들어 간다구 생각을 하시면.
size = sizeof(char *)*n;
a = (char **)malloc( size );
그리고 개개의 문자열에 대해서 다시 한번 메모리 할당을 하셔야 하네요
a[0] = (char *)malloc( 문자열 크기 );
그런 다음에 strcpy(a[0],"문자열");
이러시면 될듯 한데 ^^
가자 해외로 ~ .. 돈 벌러.
포인터가 골치 아프시면 string과 vector를 쓰는 방법도 있습니다
포인터가 골치 아프시면 string과 vector를 쓰는 방법도 있습니다.
Re: 문자열을 배열로 만드는 방법에 대해서 알고 싶습니다.
갯수가 고정 되어있다면
char* a[10];
a[0] = new char[100];
a[1] = new char[100];
...
a[9] = new char[100];
이렇게 하구요...
고정이 아니라면 doldori 님께서 제시해 주신 stl을 쓰는방법이
가장 편하고 좋을것 같네요.
http://www.korone.net QT 커뮤니티 사이트
c에서 문자의 개념이란??
문자(character)와 문자열(character row)
그러고 난후에 c에서 메모리를 어떻게 액서스 하고 값을 인출하는지를 공부하십시오.
character row? 첨들어보는 국적불명의 용어로군요.
character row? 첨들어보는 국적불명의 용어로군요.
Re: 문자열을 배열로 만드는 방법에 대해서 알고 싶습니다.
식으로 쓰셔야 하는걸텐데요..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
크기가 고정되어 있고 c++을 사용하신다면다음과 같이 사용하셔도 될
크기가 고정되어 있고 c++을 사용하신다면
다음과 같이 사용하셔도 될 것 같습니다.
[quote="Anonymous"]크기가 고정되어 있고 c++을 사용하신
C++이라면 문자열을 다루기 위해서 char *를 쓸 이유가 "거의" 없습니다.
string과 vector를 익혀두세요.
C 언어 사용자라면 포인터와 포인터의 포인터를 몸에 익히시고요. :)
[quote="정태영"][code:1]char **a;a = ne
아닙니다. 우변의 형은 char[10]에 대한 포인터이고 좌변은 char**으로 서로 다른
형입니다. 아래처럼 할 수는 있습니다.
나중에 고칠 필요가 없는 문자열이라면...[code:1]cha
나중에 고칠 필요가 없는 문자열이라면...
와 같이 만들 수도 있습니다.
차라리[code:1]char *strs[] = 
차라리
char *strs[] = { "str1", "str2", "str3" };
Re: 문자열을 배열로 만드는 방법에 대해서 알고 싶습니다.
제가 해볼땐 에러가 안나는데요?
에러가 아니라 경고일 듯...
포인터를 초기화하지 않고 사용했다는 경고가 나왔을 듯 하네요.
숙제하시면서 포인터를 이해하기 싫으시면 stl의 vector나 string 쓰시는게 가장 속편한 방법입니다. 그런식이면 차라리 java를 쓰는것도 좋은 방법이죠.
님ㅎ 즐~
댓글 달기