문자열을 배열로 만드는 방법에 대해서 알고 싶습니다.

assa의 이미지

다수의 문자열들을 배열에 담을려고 합니다.

그래서

char **a;
*a= new char[10];

이렇게 하니까 초기화 어쩌구 저쩌구 하는데요..

어떤 방법이 있는지요...

머리를 굴려봐도 잘 모르겠어요..ㅠㅠ

kicom95의 이미지

^^

문자열이 n개가 들어 간다구 생각을 하시면.

size = sizeof(char *)*n;
a = (char **)malloc( size );

그리고 개개의 문자열에 대해서 다시 한번 메모리 할당을 하셔야 하네요

a[0] = (char *)malloc( 문자열 크기 );

그런 다음에 strcpy(a[0],"문자열");

이러시면 될듯 한데 ^^

가자 해외로 ~ .. 돈 벌러.

doldori의 이미지

포인터가 골치 아프시면 string과 vector를 쓰는 방법도 있습니다.

#include <string>
#include <vector>

int main(int argc, char* argv[])
{
    std::vector<std::string> v;
    while (*argv)
        v.push_back(*argv++);
}
cbycby의 이미지

갯수가 고정 되어있다면

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? 첨들어보는 국적불명의 용어로군요.

정태영의 이미지

assa wrote:
다수의 문자열들을 배열에 담을려고 합니다.

그래서

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
}
cdpark의 이미지

Anonymous wrote:
크기가 고정되어 있고 c++을 사용하신다면
다음과 같이 사용하셔도 될 것 같습니다.

C++이라면 문자열을 다루기 위해서 char *를 쓸 이유가 "거의" 없습니다.

string과 vector를 익혀두세요.

C 언어 사용자라면 포인터와 포인터의 포인터를 몸에 익히시고요. :)

doldori의 이미지

정태영 wrote:
char **a;

a = new char[10][10];

식으로 쓰셔야 하는걸텐데요..

아닙니다. 우변의 형은 char[10]에 대한 포인터이고 좌변은 char**으로 서로 다른
형입니다. 아래처럼 할 수는 있습니다.
char (*a)[10] = new char[5][10];
익명 사용자의 이미지

나중에 고칠 필요가 없는 문자열이라면...

char **strs;
strs = new char*[3];
strs[0] = "str1";
strs[1] = "str2";
strs[2] = "str3";

와 같이 만들 수도 있습니다.

kane의 이미지

차라리
char *strs[] = { "str1", "str2", "str3" };

익명 사용자의 이미지

assa wrote:
다수의 문자열들을 배열에 담을려고 합니다.

그래서

char **a;
*a= new char[10];

이렇게 하니까 초기화 어쩌구 저쩌구 하는데요..

어떤 방법이 있는지요...

머리를 굴려봐도 잘 모르겠어요..ㅠㅠ

제가 해볼땐 에러가 안나는데요?

hanzo69의 이미지

포인터를 초기화하지 않고 사용했다는 경고가 나왔을 듯 하네요.

숙제하시면서 포인터를 이해하기 싫으시면 stl의 vector나 string 쓰시는게 가장 속편한 방법입니다. 그런식이면 차라리 java를 쓰는것도 좋은 방법이죠.

님ㅎ 즐~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.