사용자:하늘/메모장/C: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
101번째 줄: 101번째 줄:
}
}
</syntaxhighlight>
</syntaxhighlight>
동적 할당은 힙, 정적은 스택 힙은 실행 중에 할당, 스택은 실행 전 컴파일 때 이미 크기가 결정되어 있음. 컴파일 타임 때 크기를 결정하므로 배열의 크기를 변수로 놓을 수 없다. 동적 할당은 런타임에 크기가 결정되므로 배열 크기를 변수로 놓는 것이 가능하다.

2021년 11월 9일 (화) 10:42 판

문자 입출력 함수

//함수의 매개변수는 포인터로 넣는다.

int fgetc( FILE *fp); //파일에서 문자를 입력받는다.

int fputc( int c, FILE *fp); //c에 저장된 문자를 파일로 출력한다.

문자열 파일에 출력 예제

fp = fopen("파일 이름.txt", "w");

fputc('a',fp);
fputc('b',fp);
fputc('c',fp);

fclose(fp);

실행 결과(파일)

abc

문자열 파일에서 읽어오기 예제

fp = fopen("sample.txt", "r");

while((c = fgetc(fp) ! = EOF)
    putchar(c);

fclose(fp);

문자열 단위 입출력

윈도우에서 gcc 쓰는 법

mingw64 gcc 설치하기

MSYS2를 통해서 gcc 설치하기

  • MSYS2에서 직접 코딩하기 pacman -S gcc
  • MSYS2에서 GCC 설치해서 파워쉘이나 도스창에서 컴파일하기

WSL(Windows Subsystem Linux?) 설치해서 gcc이용하기

gcc 설치해서 비주얼 스튜디오 코드로 코딩하기

가상머신으로 리눅스 띄우고 쓰기

#include <stdio.h>
#include <string.h>

int main()
{
    char str[1024] = {0};
    gets(str);
    int strleng = strlen(str);

    for (int i = strleng; i >= 0; i--)
        printf("%c", str[i]);
}
// string mirror
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int strlen = 1024;
    char *string = (char *)calloc(strlen, sizeof(char));
    gets(string);
    char *str = string + strlen - 1;
    while (str != (string - 1))
    {
        if (*str != 0)
            printf("%c", *str);
        str--;
    }
    free(string);
}

동적 할당은 힙, 정적은 스택 힙은 실행 중에 할당, 스택은 실행 전 컴파일 때 이미 크기가 결정되어 있음. 컴파일 타임 때 크기를 결정하므로 배열의 크기를 변수로 놓을 수 없다. 동적 할당은 런타임에 크기가 결정되므로 배열 크기를 변수로 놓는 것이 가능하다.