C言語で文字列をメモリに読み込むには、主に**「静的な配列」を使う方法と、「動的なメモリ確保(malloc)」**を使う方法の2通りがあります。
初心者の方にも扱いやすい、標準入力(キーボード)から文字列を読み込む代表的なコードを紹介します。
1. 静的な配列を使用する方法(手軽な方法)
あらかじめ決まったサイズの箱(配列)を用意しておく方法です。
C
#include <stdio.h>
int main() {
char str[100]; // 100バイトのメモリを確保
printf("文字列を入力してください: ");
// scanfはスペースで止まるため、一行読み込むには fgets が推奨されます
fgets(str, sizeof(str), stdin);
printf("読み込んだ文字列: %s", str);
return 0;
}
2. 動的なメモリ確保を使用する方法(柔軟な方法)
プログラムの実行中に、必要な分だけメモリを確保する方法です。malloc 関数を使用し、使い終わったら free でメモリを解放するのがルールです。
C
#include <stdio.h>
#include <stdlib.h> // malloc, free に必要
int main() {
char *ptr;
int size = 100;
// ヒープ領域にメモリを確保
ptr = (char *)malloc(size * sizeof(char));
if (ptr == NULL) {
printf("メモリの確保に失敗しました。\n");
return 1;
}
printf("文字列を入力してください: ");
scanf("%99s", ptr); // 最大99文字読み込み(最後にヌル文字が入るため)
printf("メモリ上の文字列: %s\n", ptr);
// 使い終わったら必ず解放
free(ptr);
return 0;
}
⚠️ 注意点:メモリの構造
C言語で文字列を扱う際、メモリ上では文字の最後に必ず ヌル文字 \0 が追加されます。そのため、10文字の単語を保存するには、最低でも 11バイト のメモリが必要です。
💡 どちらを使うべき?
配列 (
char str[100]): 読み込む文字数の上限が決まっている場合に適しています。管理が楽です。動的確保 (
malloc): 実行時まで文字数がわからない場合や、非常に大きなデータを扱う場合に適しています。
特定のファイルから読み込みたい場合や、ポインタの概念についてもっと詳しく知りたい部分はありますか?
(※画面上のコピーアイコンで、このコードをエディタに貼り付けて試せます)