Error : free() : invalid next size (fast)
·
C
string, string 길이, 메모리 크기를 저장할 수 있는 구조체를 동적할당 받는 문제에서 free() : invalid next size(fast)라는 오류 메세지를 받았다. 메모리 쪽에 문제가 생겼겠거니 하고, 디버깅을 하는데 도무지 문제점이 보이지 않았다. (한시간 정도 걸린 것 같다)알고보니 메모리 재할당 과정 중, first->ptr(문자열 포인터)을 free시켜줬음에도 다시 malloc을 할 때 first->ptr(free를 시켜줬으니 가르키는 주소가 없는 포인터)의 strlen을 사용해서 생겼던 오류였다. 딱 그 줄만 봤을 때는 전혀 문제될게 없어보였는데... 이번 Error을 통해 윗줄, 아랫줄 간의 상관관계를 따져가며 코드를 짜야겠다는 생각을 하게 되었다.
무제한 동적 배열 문제
·
C
- 문제 설명 - 정수로 된 점수들을 EOF가 될때까지 정수 배열에 저장한다. 그런데 개수에 제한이 없어야 한다. 입력될 정수의 개수가 정해져 있지 않으므로 정수가 입력되는 한 계속해서 저장해야한다. 최초 4 개 크기의 정수 동적 배열을 사용하여 입력한다. 만일 입력된 개수가 동적 배열의 크기를 넘으면 현재 크기의 2배로 다시 동적할당을 하고  기존 항목을 복사한 뒤 기존 메모리는 free 한다. 입력이 더이상 없으면 입력 순서의 역순으로 (나중에 입력된 항목부터) 전부 출력한다. (단, realloc 을 사용하지 않는다.) - 문제 풀이 -  1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 #inc..
파일 입출력 복습
·
C
파일입출력은 다양한 프로그램을 개발할 때 자주 사용되는 기능이다. 예를 들면 파일입출력을 통해 게임에서 현재의 데이터를 저장하고 다시 불러오는 것이 있다. 뿐만 아니라 프로그램 전반에 사용되는 다양한 데이터를 처리하고저장하여 보관할 수 있다는 점에서 유용하다.  123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354//텍스트 파일 쓰기 #include stdio.h> int main(){    FILE *fp = NULL;    fp = fopen("output.txt", "w");    //w -> 쓰기 모드(write), r -> 읽기 모드(read)    if(fp==NULL)..
구조체 복습
·
C
구조체 : 여러 개의 데이터를 하나로 묶어서 사용할 수 있도록 만들어진 C언어의 문법(여러개의 "동종" 자료형 데이터들을 하나로 묶는 배열과 차이가 있다) . 후에 이러한 개념은 객체 지향 프로그래밍에서 클래스라는 개념으로 확장되어 사용된다고 한다.123456789101112131415161718192021222324#include stdio.h>#include stdlib.h> struct student {    int number;    char name[10];    double grade;};//자료형 선언 int main(){    struct student s;//변수 선언     printf("학번을 입력하세요 : ");    scanf("%d", &s.number);    printf("이..
여러개 스트링의 동적 할당
·
C
12345678910111213141516171819202122232425262728293031#include stdio.h>#include string.h>#include stdlib.h>#define MAX 80 int main(){    char *str1;    char *str2;    char *str3;    char buf[MAX];     printf("Enter a string.\n");    scanf("%s", buf);    str1 = (char*)malloc(strlen(buf)+1);    strcpy(str1, buf);     printf("Enter a string.\n");    scanf("%s", buf);    str2 = (char*)malloc(strlen(b..
스트링 한개의 동적할당
·
C
123456789101112131415#include stdio.h>#include string.h>#include stdlib.h>#define MAX_STR 80 int main(){    char buffer[MAX_STR+1];    char *pStr;     scanf("%s", buffer);    pStr = (char*)malloc(strlen(buffer)+1);    strcpy(pStr, buffer);    printf("%s\n", pStr);    return 0;}Colored by Color Scriptercs
포인터를 이용하여 스트링 뒤집기
·
C
12345678910111213141516171819#include stdio.h>void flip(char *s){    char temp;    int strlen, i;    for(strlen=0;*(s+strlen)!='\0';strlen++);    for(i=0;istrlen-i;i++){        temp = *(s+i);        *(s+i) = *(s+((strlen-1)-i));        *(s+((strlen-1)-i)) = temp;    }    *(s+strlen) = '\0';}int main(){    char str[100];    scanf("%s", str);    flip(str);    printf("%s\n", str);    return 0;}Colo..
오목 게임 프로그램
·
C
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110#include stdio.h>#define BSIZE 10    // Board size#define BLACK_STONE "○"  // 바탕색이 검정이면 이게 검은색#define WHITE_STONE "●"#define CROSS "┼"#define BLACK  1  // 배열에 저장하는 값#define WHI..