문자열로 변수 선언

jose의 이미지

안녕하세요.
임의의 문자열을 변수로 선언하기 위해 제법 고심해 봤지만 답이 안나오는 군요.
해결 방법이 없을까요?

예를 들면, 임의의 문자열을 입력받아 그 입력받은 문자열의 변수를 만들고 싶습니다.
그러니까 "string" 이라는 문자열을 char *str 이라는 변수에 입력받았다면,
이 str에 저장되어 있는 'string'라는 문자열 값을 추출해서 string라는 새로운 변수를 생성하고 싶습니다.

도움 부탁드립니다.
아! 그리고, C 언어입니다.

ironiris의 이미지

어떤 언어진지도 좀 알려주심이.. ^^;;
php나 c라면 sprintf 를 사용할때도 있고요....

아 엄한 대답을 해드렸네요. 죄송합니다~

jose의 이미지

바로 추가하여 수정했었는데, 금새 보셨나 봅니다.
죄송하긴요, 오히려 답변 감사합니다.
다만, 제가 의도한 것과 다르게 이해하신 것 같습니다.

str에 "aaaa"라는 문자열이 들어 있다면,
앞으로 호출할 func()에서 int aaaa; /* 'aaaa'는 str 문자열 변수의 값 */
이런식으로 사용하고 싶은 겁니다.

ironiris의 이미지

근데 그럴 이유가 꼭 있으신지요?
변수명은 컴파일러에 의해서 구분자로만 사용되어질텐데.. 꼭 이름을 지정해야 하는 이유가 있는지요?

그러니까...
int d=10;
printf("%d\n",d);

int ddddddd=10;
printf("%d\n",ddddddd);
나.. 컴파일된 결과물은 동일한 것으로 알고 있습니다.

jose의 이미지

문자열을 함수 포인터의 포인터로 바로 넘겨주고 싶어서 입니다.

bootmeta의 이미지

man strncpy 하시거나 google로 strncpy

jose의 이미지

제 설명이 너무 부족했던 것인지,
아니면 그 함수에 대한 제 이해가 부족한 것인지,

답변주신 그 함축적인 의미를 잘 모르겠습니다.

IsExist의 이미지

질문이 정확히 이해했는지를 알기 위해 변수 기능이 있는 계산기를 생각해겠습니다.
phi = 3.141592
radius = 6
res = 2 * phi * radius

처럼 실행중에 저렇게 변수와 값을 사용하고 싶은건가요?
---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

jose의 이미지

제 질문의 설명이 부족한 거군요.
아랫 분들의 글을 읽으면 이해하실 것 같습니다.

답변 감사합니다. ^^

송효진의 이미지

<?php
$a = 'asdf';
$asdf = 'bbb';

echo($두개a);

?>
결과는 bbb 가 출력되죠.

질문의 요지는 이것을 c 로 어떻게 해야 하는가 인데,
답변자분들이 잘 못알아들으시는 이유가 왜 이렇게 해야 하는지에 대해서 인듯 합니다.

---
php 문법을 그대로 출력해주지 못하고 echo 나 $$ 등에서 줄이 바뀌어 버리는군요...

emerge money

jose의 이미지

php는 모르겠지만,
제대로 짚어 주신듯 합니다. 아마?
답은 못 얻었으나, 그나마 속 시원하군요.

방향이 아예 어긋나 있었으니;

fontutil의 이미지

불가능합니다.

jose의 이미지

저도 그렇게 단정내리고 있었습니다.
감사합니다.

cmoh1110의 이미지

무엇때문에 그런 기능을 구현하시려는 지 모르겠지만,
임의의 문자열 값을 '키'로 하는 hash 테이블을 쓰면 안되나요?

jose의 이미지

명령행 분석 함수를 작성하다가
문자열을 바로 함수포인터로 넘겨주면 좋을 것 같아서
그 방법을 찾다가 이렇게 질문까지 한 겁니다.

감사합니다.

bus710의 이미지

그런 방법을 사용하면 접근 시에... 포인터와 달리 '숫자 카운트에 의한 접근'이 불가해 지기 때문에 라도 피하는게 좋지 않을까요??^^

akudoku.net

life is only one time

jose의 이미지

언급하신 '숫자 카운트에 의한 접근'에 대해 좀 더 자세히 설명해 주시지 않겠습니까?
어떤 의미로 말씀하신건지 짐작이 안됩니다.

익명사용자의 이미지

그런건 안됩니다. 스크립트 언어의 eval 문 같은걸 바라시는것 같은데, C 에서 변수명은 컴파일 타임에 결정됩니다.

왜 그걸 할려고 하시는지 생각해 보시고, 고심하면 다른 더 좋은 방안이 생각나실겁니다.

변수가 아니라 입력받은 값을 식별자로 사용해 다른 값을 매핑하고 싶은 것이라면 매핑 테이블을 만들어야겠지요. string:string 의 map 자료구조, 혹은 array, list 어떤 식으로든 저장하고 매핑후 참조 가능합니다.

프로그램 내에서 변수라는건 어짜피 데이터를 저장하기 위해 이름을 가지고 있는 것으로 유사 테이블 형태로 흉내 낼 수 있습니다.

jose의 이미지

더 좋은 방안은 아닌 것 같으나,
매핑 테이블을 만드는 걸로 우회했습니다.
도움 감사드려요.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.