diff --git a/Makefile b/Makefile index d148c63..af06e3f 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ CC = gcc CFLAGS = -Wall -Wextra -O2 TARGET = dist/hello -SRC = src/hello.c +SRC = src/c/hello.c $(TARGET): $(SRC) $(CC) $(CFLAGS) $(SRC) -o $(TARGET) diff --git a/readme/c.md b/readme/c.md index e560080..33c739b 100644 --- a/readme/c.md +++ b/readme/c.md @@ -1 +1,4 @@ -# C言語について \ No newline at end of file +# C / C++言語について + +* コンパイラ: GCC / G++ +* ビルド管理: Makefile \ No newline at end of file diff --git a/src/c/cp.c b/src/c/cp.c new file mode 100644 index 0000000..d00f136 --- /dev/null +++ b/src/c/cp.c @@ -0,0 +1,34 @@ +#include + +int main(int argc, char *argv[]) { + + // 引数のチェック 3以外ならエラー + if (argc != 3) { + fprintf(stderr, "Usage: %s src dest\n", argv[0]); + return 1; + } + + // ファイルのオープン + FILE *src = fopen(argv[1], "rb"); + FILE *dst = fopen(argv[2], "wb"); + + // オープン失敗時のエラーチェック + if (!src || !dst) { + perror("File open error"); + return 1; + } + + // ファイルのコピー 4096バイトずつ書き込む + char buf[4096]; + size_t n; + + // 読み込みと書き込みのループ + while ((n = fread(buf, 1, sizeof(buf), src)) > 0) { + fwrite(buf, 1, n, dst); + } + + fclose(src); + fclose(dst); + + return 0; +} diff --git a/src/hello.c b/src/c/hello.c similarity index 100% rename from src/hello.c rename to src/c/hello.c