사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

'Game > etc' 카테고리의 다른 글

ip로 멀티플레이 할 수 있는 간단한 게임들 목록  (6) 2009.10.24
The Very End of You  (0) 2009.05.11
Vantage Master Tatics V2  (0) 2008.12.11
NeverWinterNights 최종보스전  (0) 2008.12.09
NeverWinterNights1 ZombieKing VS  (0) 2008.12.02
Posted by 쵸코케키

'Game > etc' 카테고리의 다른 글

ip로 멀티플레이 할 수 있는 간단한 게임들 목록  (6) 2009.10.24
The Very End of You  (0) 2009.05.11
Vantage Master Tatics V2  (0) 2008.12.11
NeverWinterNights 최종보스전  (0) 2008.12.09
NeverWinterNights1 Versus RedDragon  (0) 2008.12.07
Posted by 쵸코케키


///////////
★★★C method 1
///////////
#include <stdio.h>
#include <stdlib.h>

#define INPUT_FILE_1 "hw1_in1"
#define OUTPUT_FILE_1 "hw1_out1"

void ReadFile();
void WriteFile();
void ParseLine(char * pLineBuf);

int main()
{

 printf("\n\n");
 printf("%s : file read\n", INPUT_FILE_1);
 printf("====================================\n");
 
 ReadFile();
 
 printf("\n\n");
 printf("%s : file write\n", OUTPUT_FILE_1);
 printf("====================================\n");
 
 WriteFile();

 printf("\n\n");
 return 0;
}

void ReadFile()
{
 char buf[256];
 FILE * fp;

 fp = fopen(INPUT_FILE_1, "r");
 
 if (fp == NULL)
 {
  printf("%s file open error\n", INPUT_FILE_1);
  exit(0);
 }

 while(!feof(fp))
 {
  fgets(buf, sizeof(buf), fp);

  ParseLine(buf);
 }
 
 fclose(fp);
}

void WriteFile()
{
 int i;
 float f;
 char buf[256];
 FILE * fp;

 fp = fopen(OUTPUT_FILE_1, "w");
 
 if (fp == NULL)
 {
  printf("%s file open error\n", INPUT_FILE_1);
  exit(0);
 }

 fprintf(fp, "---------------------------------\n");
 fprintf(fp, " %s file write test\n", OUTPUT_FILE_1);
 fprintf(fp, "---------------------------------\n");
 
 f = 0.0;
 
 for (i = 0; i < 5; i++)
 {
  fprintf(fp, " %.2f\t%.2f\t%.2f\n", f + 1, f + 1, f + 1);
  f++;
 }
 
 fclose(fp);
}


// 이 함수에서 파싱을 합니다
void ParseLine(char * pLineBuf)
{
 printf("%s", pLineBuf);

}


C++
http://www.cplusplus.com/reference/iostream/ifstream/open.html

this is reference and easy to use

#include

ofstream output;
output.open("filename" ios::out | ios::trunc);


if(output.is_open())
output << "anything if you wanna";

 

'devel > man & example' 카테고리의 다른 글

scanf에서 fflush(stdin) 사용 안하고 \n 파싱해서 없애기  (2) 2011.11.27
function pointer  (0) 2009.11.24
sprintf int to ascii  (0) 2009.11.08
String Parsing  (0) 2008.05.25
bit shift e.g. , 2dim matrix, Defed Func  (0) 2007.05.01
Posted by 쵸코케키

2008. 12. 2. 15:28 devel/etc

simple fgets source code

/*-
 * Copyright (c) 1990, 1993
 * The Regents of the University of California.  All rights reserved.
 *
 * This code is derived from software contributed to Berkeley by
 * Chris Torek.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)fgets.c 8.2 (Berkeley) 12/22/93";
#endif /* LIBC_SCCS and not lint */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD: src/lib/libc/stdio/fgets.c,v 1.14 2007/01/09 00:28:06 imp Exp $");

#include "namespace.h"
#include <stdio.h>
#include <string.h>
#include "un-namespace.h"
#include "local.h"
#include "libc_private.h"

/*
 * Read at most n-1 characters from the given file.
 * Stop when a newline has been read, or the count runs out.
 * Return first argument, or NULL if no characters were read.
 */

char *
fgets(buf, n, fp)
 char *buf;
 int n;
 FILE *fp;
{
 size_t len;
 char *s;
 unsigned char *p, *t;

 if (n <= 0)  /* sanity check */
  return (NULL);

 FLOCKFILE(fp);
 ORIENT(fp, -1);
 s = buf;
 n--;   /* leave space for NUL */
 while (n != 0) {
  /*
   * If the buffer is empty, refill it.
   */
  if ((len = fp->_r) <= 0) {
   if (__srefill(fp)) {
    /* EOF/error: stop with partial or no line */
    if (s == buf) {
     FUNLOCKFILE(fp);
     return (NULL);
    }
    break;
   }
   len = fp->_r;
  }
  p = fp->_p;

  /*
   * Scan through at most n bytes of the current buffer,
   * looking for '\n'.  If found, copy up to and including
   * newline, and stop.  Otherwise, copy entire chunk
   * and loop.
   */

  if (len > n)
   len = n;
  t = memchr((void *)p, '\n', len);
  if (t != NULL) {
   len = ++t - p;
   fp->_r -= len;
   fp->_p = t;
   (void)memcpy((void *)s, (void *)p, len);
   s[len] = 0;
   FUNLOCKFILE(fp);
   return (buf);
  }
  fp->_r -= len;
  fp->_p += len;
  (void)memcpy((void *)s, (void *)p, len);
  s += len;
  n -= len;
 }
 *s = 0;
 FUNLOCKFILE(fp);
 return (buf);
}

'devel > etc' 카테고리의 다른 글

Makefile 쉬운 예제  (1) 2009.10.17
윤드림훃의 주옥같은 글  (0) 2009.10.17
Debug Mode - Enable  (0) 2009.01.02
File To String in C++  (0) 2008.05.27
class member 접근과 클래스 내에서 클래스 선언해서 쓰기  (0) 2007.04.26
Posted by 쵸코케키

2008. 11. 29. 09:41 devel

Sprintf part1




설명

메모리 영역으로 서식에 맞추어 출력합니다. 아래의 서식 변환 문자열을 참고하십시오.

변환 문자열 의미
%o 8진 정수 형식으로 출력
%d 10진 정수 형식으로 출력
%ld long형 10진 정수 형식으로 출력
%x 16진 정수 형식으로 출력
%u 부호 없는 10진 정수 형식으로 출력
%f 소수점 형식으로 출력
%e %E 지수 형식으로 출력
%g %G %e와 %f 중 짧은 쪽, 소수점에 이어지는 0은 생략
%c 문자 형식으로 출력
%s 문자열 형식으로 출력

참고로 서실 문자열에 옵션을 추가하여 좀더 다양하게 출력할 수 있습니다. 아래의 예를 참고하여 주십시오.

변환 문자열 출력 의미
printf("%d", 123) 123 표준 출력장치로 출력
printf("%5d", 123) ___123 10진수를 5자리에 맞추어 출력, 123앞에 공백 2개 추가
printf("%-5d", 123) 123__ 10진수를 5자리에 맞추어 출력, 왼쪽 맞춤, 오른쪽에 공백 추가
printf("%f", 1.234567) 1.234567 16진 정수 형식으로 출력
printf("%4f", 1.234567) 1.2346 소쉄 이하 4자리 출력, 반올림
printf("%7.2f", 1.234567) ___1.23 소숫점 포함해서 전체 7자리, 소수점 이하 2자리. 공백 3개가 앞 부분에 추가됩니다.
printf("%s", "forum.falinux.com") forum.falinux.com 지수 형식으로 출력
printf("%20s", "forum.falinux.com") __________forum.falinux.com 자릿수를 맞추기 위해 왼쪽에 공백을 넣어 문자열 출력
printf("%10s", "forum.falinux.com") forum.falinux.com 문자열이 더 길면 그대로 출력
printf("%.10s", "forum.falinux.com") forum.fali 문자열이 더 길면 잘라서 출력
printf("%-20s", "forum.falinux.com") forum.falinux.com________ 문자열을 왼쪽 맟춤으로 하여 오른쪽에 모자르는 자리를 공백으로 메꿈
printf("%12.10s", "forum.falinux.com") __forum.fali 전체 12자리로 10자리만 출력, 모자른 부분은 왼쪽에 공백 추가하여 출력
헤더 stdio.h
형태 int sprintf (const char s, const char * format, ... );
char *s
char *format 서식 문자열

인수


반환

char *s 서식에 맞추어 저장할 메모리 영역의 포인터 
 char *format 서식 문자열 

int  출력된 문자 수를 반환하며 오류가 발생하면 음수를 반환 
 
예제
#include <stdio.h>

int main( void)
{
   char  ptr[1024];
   int   ret;

   ret   = sprintf( ptr, "%d %x %s", 123, 123, "forum.falinux.com");
   printf( "ret=%d ptr=%sn", ret, ptr);

   return 0;
}
]$ ./a.out
ret=24 ptr=123 7b forum.falinux.com
참고


char temp[16] = {0};

sprintf(temp, "TEST : %.*s", 5, "1234567890"); //5 때문에 5글자를 넣는듯 싶음(공간이 남아있음)
printf("%.*s\n
%s\n", strlen(temp), "12345678901234567890", temp);
printf(temp);
결과

123456789012
TEST : 12345 // %.*s 로 자릿수 지정한만큼 출력 strlen(temp),      %s 스트링

TEST : 12345 //이건 당연한거고


asterisk * 를 사용하면 정밀도 조종이 가능함
*s,10 이런식으로 쓰던데 우측정렬기능이 있는듯함


결론 .*s 쓰면 원하는 만큼 문자열에서 빼다 쓸 수 있음
근데 문자열보다 긴 길이일경우 정렬이 깨짐


http://neodreamer.tistory.com/101
참고 여러 옵션 비교

'devel' 카테고리의 다른 글

4bytes data type pointer에서 1byte 씩 접근하기  (0) 2012.06.02
gcc 개인적인 정리  (0) 2012.04.23
Posted by 쵸코케키

2008. 5. 27. 18:13 devel/etc

File To String in C++

method1

  ifstream infile;
  infile.open ("input.txt");
 
if (infile.is_open())
  {
    while (infile.good())
 {



  infile >> str;                                         //stream으로 넘기면 공백, \n 파싱 자동으로 됨
                                                                //웃긴건 str을 int형으로 선언하면 int 형으로 들어간다
  cout<< str<<endl;                                
  tmp =  (char) infile.get();                          //char 형으로 들어감(int로 들어와서)
 }                                                         //.getline() 하면 어케 들어갈지 궁금(string으로 될듯?)
    infile.close();
  }


자세한건 ifstream의 member function을 찾아보도록



  else
  {
    cout << "Error opening file";
  }






 method2
1.파일을 불러들인다
2.파일의 개행문장을 한줄씩 vector에 저장한다
3.저장된 vector의 값을 istringstream을 이용하여 개별단어별로 출력한다

이상입니다.

============================================


//프로그램에서 사용할 헤더파일의 로드
#include<iostream>
#include<vector>
#include<string>
#include<fstream>
#include<sstream>

//표준 이름공간 사용 선언
using namespace std;      

//파일로 부터 읽어들여서 벡터로 store하는 함수의 선언
void store(vector<string> &vv)
{
        //datafile.txt를 읽어들인다
        ifstream file_in("datafile.txt", ios::in);
        //문자열을 읽어들이기 위한 buffer의 선언
        char buffer[100];          
   
        //최대 100글자, 한줄씩 buffer에 저장한다
        while(file_in.getline(buffer, 100, '\n')!=NULL)
    {
                //buffer에 저장된 값을 string type인 벡터로 넣기 위한 string type 변수 tmp의 선언
                string tmp;
                //tmp 에 buffer의 값을 넣는다
            tmp = buffer;
                //벡터 vv에 tmp를 push_back한다
            vv.push_back(tmp);
        }
        //파일의 끝까지 읽고 파일을 닫는다
    file_in.close();    
}

//벡터로 읽어들인 파일의 개행문장을 단어(word)별로 출력하는 함수 print의 선언
void print(vector<string> &vv)
{
        //vector vv의 사이즈만큼 루프를 수행한다
        for (int ii = 0 ; ii != vv.size() ; ++ii )
        {
                //string type 변수 line과 word의 선언
                string line, word;
                //변수 line에 vector vv의 [ii]번째 요소를 반환해서 집어넣는다
                line = vv[ii];

                //line에 저장된 값을 출력하고 사용자의 이해를 돕기 위한 내용문 출력
                cout << endl << "ivec[" << ii << "]에 파일로부터 읽어들여 저장되어있는 한 문장 : "
                         << endl << line << endl
                         << "=========================================================================="
                         << endl << "이하는 각각 단어별로 출력하기 : " << endl << endl;
               
                //istringstream을 이용해 string type 변수 line에 저장된 값을 임시저장한다
                istringstream stream(line);
                //stream이 '\n'을 만날때까지 while구문을 수행한다
                //빈칸을 제외한 각각의 개별 단어를 string type 변수 word에 저장한다
                while (stream>>word)
                {
                        //저장된 word를 한줄씩 화면에 출력한다
                        cout << word << endl;
                }
        //사용자가 한 화면에 한 문장씩 보기 수월하도록 넣은 선택문
        char cmd;
        cout << endl << "계속하시겠습니까? (y/n) : ";
        cin >> cmd;
        //y를 입력하면 for loop 문장을 계속 수행
        if ( cmd == 'y' )
                continue;
        //y가 아니면 loop문장을 빠져나간다
        else break;
        }
}

//main함수의 선언
void main(void)
{
        //datafile의 값을 저장할 string type의 vector ivec의 선언
        vector<string> ivec;


        //store함수를 이용하여 ivec에 한줄씩 string으로 저장
    store(ivec);
        //print함수를 이용하여 ivec에 저장된 line을 word별로 한줄씩 출력
        print(ivec);

}

'devel > etc' 카테고리의 다른 글

Makefile 쉬운 예제  (1) 2009.10.17
윤드림훃의 주옥같은 글  (0) 2009.10.17
Debug Mode - Enable  (0) 2009.01.02
simple fgets source code  (0) 2008.12.02
class member 접근과 클래스 내에서 클래스 선언해서 쓰기  (0) 2007.04.26
Posted by 쵸코케키

2008. 5. 25. 16:50 devel/man & example

String Parsing

1

string tmp; string str("Test string");

size_t found = str.find('i');
tmp.assign(str,0,found);


끝~
i 이후 부분은

tmp.assign(str,found,str.length()) 하면 됨미..


i를 제거 하고 싶으면 found + 1하면 되고





2
string에서 parsing 하기 ,  istringstream 에 관한 간단한 예시( 공백 파싱_ )

'string.h'에 정의된 strtok() 함수가 있습니다.

예제를 보자면

char string[] = "words separated by spaces -- and, punctuation!";
const char delimiters[] = " .,;:!-";
char *token;

token = strtok (string, delimiters); /* token => "words" */
token = strtok (NULL, delimiters); /* token => "separated" */
token = strtok (NULL, delimiters); /* token => "by" */
token = strtok (NULL, delimiters); /* token => "spaces" */
token = strtok (NULL, delimiters); /* token => "and" */
token = strtok (NULL, delimiters); /* token => "punctuation" */
token = strtok (NULL, delimiters); /* token => NULL */


위의 예제에서 delimiters[] 에 설정된 문자들이 구분자로 사용됨을 알수 있습니다.

공백문자마다 쪼개고 싶다면 delimiters[] = " " 라고 사용하시면 됩니다.








#include <iostream>
#include <sstream>
#include <string>
using namespace std;
//istringstream::str

int main () {

  int val,n;

  istringstream iss;
  string strvalues = "32 240 2 1450";

  iss.str (strvalues);

  for (n=0; n<4; n++)
  {
    iss >> val;
    cout << val+1 << endl;
  }

  return 0;
}

'devel > man & example' 카테고리의 다른 글

scanf에서 fflush(stdin) 사용 안하고 \n 파싱해서 없애기  (2) 2011.11.27
function pointer  (0) 2009.11.24
sprintf int to ascii  (0) 2009.11.08
C++ , C File OUTPUT e.g.  (0) 2008.12.02
bit shift e.g. , 2dim matrix, Defed Func  (0) 2007.05.01
Posted by 쵸코케키

1
#
include <stdio.h>

int main(void)
{
 printf("\nsigned  int  min: %d",1<<(sizeof(int)*8-1));
 printf("\nsigned  int  max: %d",~(1<<(sizeof(int)*8-1)));
 printf("\nunsigned int max: %u",~0);
 return 0;
}


2
크기가 m*n인 2차원 배열을 만들 때,

int** aArray=new int*[m];
for(int i=0;i<n;++i) aArray[i]=new int[n];

이렇게 하면 전체초기화를 위해 memset을 하려고 할때 곤란하다. 나중에 delete할때도 또 루프를 돌아야 해서 귀찮다. 하지만 아래 코드처럼 하는건 어떨까? 아! 래! 코! 드!


int** aArray=new int*[m];
aArray[0]=new int[m*n];
for(int i=1;i<m;++i) aArray[i]=aArray[i-1]+n;

이렇게 하면 전체 초기화할때도 memset(aArray[0],0,sizeof(int)*m*n) 하면 되고, 사용이 끝났을 때는 delete[] aArray[0]; delete[] aArray; 이렇게 하면 되니까 말이다.

뒷북이면 Zaphok




3
#define exch(x,y) {int tmp; tmp = x; x=y; t=tmp;}
main() exch(a,b); !!!!!!

'devel > man & example' 카테고리의 다른 글

scanf에서 fflush(stdin) 사용 안하고 \n 파싱해서 없애기  (2) 2011.11.27
function pointer  (0) 2009.11.24
sprintf int to ascii  (0) 2009.11.08
C++ , C File OUTPUT e.g.  (0) 2008.12.02
String Parsing  (0) 2008.05.25
Posted by 쵸코케키



해결

클래스안에서 ->data로 가면 멤버는 주소로  접근이 될까 아니면
직접 접근이 될까?

ex> tail->data!='s' 이런게 가능할까?

data를 리턴하고 싶으면


return tail->prev->data 로 될까 아니면 &로 객체를 넘겨줘야할까?  /////&안해도 됨
그리고 객체 자체가 리턴이 되는듯.

ex>>

class t
{
private:
 class nt
 {public:     char ch;      nt* next;
 };


char t::print()
{ return head->next->ch; }

void t::in(char a)
{head->next->ch=a;}


t test;    test.in(ta[0]);
char tmp=test.print();
cout <<tmp;



class에서 다른 클래스를 선언해서 사용해야만 할때

내가 찾아낸 방법;
private에서 pointer선언후
생성자에서 생성시켜서 주소를 먹고튄다

다른 방법
private에서 직접 생성을 시킨다 -_-;;;;;
exx>>

tree.h 
stack<child*> stkt;
stack<child*>* stktree;

tree.cpp
stktree=&stkt;

이거 그냥 포인터 안쓰고 바로 해도 될꺼같은데

'devel > etc' 카테고리의 다른 글

Makefile 쉬운 예제  (1) 2009.10.17
윤드림훃의 주옥같은 글  (0) 2009.10.17
Debug Mode - Enable  (0) 2009.01.02
simple fgets source code  (0) 2008.12.02
File To String in C++  (0) 2008.05.27
Posted by 쵸코케키

2007. 4. 12. 19:04 카테고리 없음

새집...

사용자 삽입 이미지



집터를 옮길지 그대로 안주해 있을지는 아직 미정인 상태...


새집이 몸에 맞는지 몸을 새집에 맞게 늘려야 하는지 우선 봐야겠다..

Posted by 쵸코케키

블로그 이미지
chocokeki
쵸코케키

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.1
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함