[진행]C언어 txt파일에서 배열로 저장하는법

baw518의 이미지

너무 어렵네요.. 일단 상황을 설명 드리자면

카드 게임을 만드려고 하는데 카드 게임을 하려면 일단카드 부터 있어야 되지 말입니다.

제가 C언어를 잘 할줄 몰라서 다른분들이 카드 만드는 방법이 이해가 안되서 제 나름대로 생각을 한게

static char *cards[BUFSIZ]={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
static char *suit[BUFSIZ]={"♠ ", "◆ ", "♥ ", "♣ "};

int i, j= 0;
for(j=0;j<4;j++){
for(i=0; i<13;i++){
printf("%s%s. ",suit[j],cards[i]);

// 위와 같은 방식으로 해서 파일에 저장하는 프로그램을 짯는데

이제 이파일을 배열로 저장하려면 어떤 방법을 써야하는지

모르겠어서 질문드립니다.

%s%s 옆에 . 은 단어 구분하려고 적어놓은건데 C언어에서는

저렇게 해서 파일 구분할 수 있는거 맞죠?

아시는분은 부디 간단한 댓글이라도 남겨 주시면 감사하겠습니다.

-------------------------------------------------

염치 없지만 추가로 질문하자면 만약에 배열에 저장되었다고 가정했을때,

거기서 중복되지 않고 52장의 카드를 2장 1장 씩 뽑을수 있는 방법(저는 섞어서 배열 순서대로

52개 뽑고 다 뽑거나 다시 섞고싶을때 섞기하는 방법으로 하려고 합니다) 과

다시 셔플을 해서 52장의 카드를 채울수 있는 방법도 가르쳐 주시면 감사하겠습니다 ^^

'디테일하게 해주실 필요는 없고(해주신다면 제 입이 찢어지겠지만)'

'대충 배열에 저장하는건 xxx 함수고,xxx함수는 이렇게 쓰는거다.'

'배열에서 52장을 섞어놓고 2개 하나씩 뺴려면 xx함수를 쓰는게 좋을거 같은데?

'채우기는 초기 배열 불러와서 다시 섞어'.

이런식으로 가르쳐주셔도 초보자인 저한테는 매우 감사할 것 같습니다.

알고리즘 짜놓고 문법을 몰라서 알고리즘도 수정 못하고 되는것도 못만들고

그럼 모쪼록 좋은 주말 되시길..

shint의 이미지

%s%s 옆에 . 은 단어 구분하려고 적어놓은건데 C언어에서는
저렇게 해서 파일 구분할 수 있는거 맞죠?

첫번째%s와 두번째%s가 중복되지 않는다면
A1B2 == A2B2 이런식으로 문자열 비교하듯이 가능합니다.
char니까 short등에 넣어서 비교하시면 될듯합니다.

좀더 쉽게 사용하려면 STL MAP 등을 배우시면 좋겠습니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

baw518의 이미지

일단 제글 뒤에도 답글 달리는거 보면서 너무 통상적인 질문을 하지 않았나

생각을 해봤는데(자괴감을 느꼇죠.. ^^;) 솔직히 검색해도 나오기는 하는데 제가 이해가 좀 되지 않아서 ㄱ-...

좌절이죠... 다른사람들은 알아 듣는 답변을 전 못알아들으니까요.. ㅠㅠ

제 질문이 부적합했던가요.. ^^; 제가 말한건 deck txt 에 52장의 카드를 써놓고 그 파일을 '.'으로

구분해서 배열에 52개의 데이터를 집어넣는건데.. 아직 STL MAP 조사해보진 않았지만 태어나서

STL MAP은 처음들었어요 정말 감사합니다. 공부해보겠습니다.제가 좀 C언어를 날로 배워서요 ^^;

amorette의 이미지

배열의 내용을 파일에 저장한다는 말씀이죠?

우리가 쉽게 이해할 수 있도록 "♥A"와 같이 적을 수도 있고, 아니면 목적에 따라 "h10" 또는 "4,10" 등으로 기록할 수도 있을겁니다. 이런 것을 인코딩이라 합니다.

52장은 하나의 덱(deck)입니다.
덱을 배열로 초기화한 뒤, 게임의 상황에 맞게 시뮬레이션을 하는 것이 간단하고 알맞은 방법일 것 같습니다.
덱에서 카드를 빼내고 넣는 것을 시뮬레이트한다면, 덱에서 꺼낸 카드가 위치할 공간에 대해서도 고려해야할 것입니다. 예를 들어 덱에서 두장을 꺼낸다면 배열에는 50장만 들어있습니다. 이 사실을 기록해 두는 것이 좋을 것입니다. 스택 자료구조에 대해 알아보세요. 덱을 관리하는 방법에 힌트를 얻을 수 있습니다. 꼭 스택 구조를 사용해야 한다는 것은 아닙니다. 스택 자료구조의 예처럼 카드가 몇장이 존재하고, 몇장이 꺼내져 있는지 관리하기 위한 로직이 필요할 것이라는 뜻입니다.

'카드'와 '덱'을 나타내는 자료구조를 각각 하나씩 만든다면 문제를 추상화하기 편리할 것입니다.
예를 들어 구조체를 사용할 수도 있습니다.

struct card { ... };
struct deck { struct card[52]; ... };

하나의 deck을 뒤섞는 함수가 필요할 것입니다.
stdlib에 포함된 rand, srand, random, srandom과 같은 랜덤 함수가 필요할 것입니다.

deck_shuffle(struct deck *d);

덱을 파일로부터 읽어들이거나 파일로 써야할 것입니다.
deck은 card의 배열을 가지고 있고, for문을 통해 모든 card를 순회합니다. 각각 순회하면서, 해당 card를 적절한 표기 방법으로 파일로 쓰면 됩니다.

deck_save(struct deck *);
deck_load(struct deck *);

STL은 C가 아니라 C++의 것이기 때문에 C에서 사용할 수 없습니다.

baw518의 이미지

배열을 파일에 저장하는게 아니라

파일을 배열로 저장해서 빼내려고 하는거예요 ^^

이게 파일로 쓰는것 까지는 쉽게 했는데 배열로 저장하는게 잘 안되네요..

저장만 해놓으면 뭐가 좀 풀리겠는데 말이죠..

그건 그렇고 스택구조라.. 괜찮네요 자료구조는 신경안쓰고 알고리즘 짯었는데 많은 도움이 됐습니다

좀더 쉬운 프로그래밍이 될거 같네요 감사합니다!

cleansugar의 이미지

serialization을 알아보세요.

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

댓글 달기

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