C言語でテキストを1行に1単語ずつ表示する方法
C言語では、ファイル操作と fscanf 関数を組み合わせることで、テキストファイル内の文字列を「1行に1単語」の形式で出力できます。この記事では、その基本的な手順とサンプルプログラムをわかりやすく解説します。
処理の流れ
まず、ファイルを書き込みモードで開き、ユーザーが入力したテキストを書き込みます。Windows環境では Ctrl + Z を押すことで EOF(End Of File、ファイル終端)が送られ、入力が終了します。
次に、同じファイルを読み込みモードでもう一度開きます。そして、fscanf を使ってファイルから単語を1つずつ読み取り、改行を付けて画面に表示します。
実装のポイント
fopen("file.txt", "w")— ファイルを書き込みモードで開くgetcとputc— 入力された文字を1文字ずつファイルへ書き込むfscanf(fp, "%s", word)— 空白や改行を区切りとして、ファイルから1単語ずつ読み取るfclose(fp)— 処理後は必ずファイルを閉じる
サンプルプログラム
以下は、入力されたテキストを1行に1単語ずつ表示するCプログラムの例です。
#include <stdio.h>
int main(void){
char ch;
FILE *fp;
/* ファイルを書き込みモードで開く */
fp = fopen("file.txt", "w");
if(fp == NULL){
printf("ファイルを作成できません\n");
return 1;
}
printf("テキストを入力し、Ctrl+Z を押してください:\n");
while((ch = getchar()) != EOF){
putc(ch, fp); /* 1文字ずつファイルに書き込む */
}
fclose(fp);
/* ファイルを読み込みモードで開く */
fp = fopen("file.txt", "r");
if(fp == NULL){
printf("ファイルが存在しません\n");
return 1;
}
printf("ファイルの内容(1行に1単語):\n");
{
char word[100];
while(fscanf(fp, "%s", word) != EOF){
printf("%s\n", word); /* 各単語を別々の行に出力 */
}
}
fclose(fp); /* ファイルを閉じる */
return 0;
}
実行結果
上記のプログラムを実行すると、次のような結果になります。
テキストを入力し、Ctrl+Z を押してください: Hi Hello Welcome To My World ^Z ファイルの内容(1行に1単語): Hi Hello Welcome To My World
補足:Linux/macOSの場合
Unix系OSでは EOF の入力は Ctrl + D で行います。また、fscanf の %s は空白・タブ・改行をすべて区切りとして扱うため、どのような形式で保存されたテキストでも自動的に単語ごとに分割されます。バッファオーバーフローを防ぎたい場合は、%99s のように最大幅を指定するとより安全です。
-
Linuxコマンドラインでテキストファイルの内容を表示する方法|cat・more・lessの使い方徹底解説
Linuxを使い始めたばかりの方から最もよく寄せられる質問のひとつが、「どのコマンドを使えばファイルの中身を確認できるのか」というものです。伝統的なUnix環境に関することの多くと同じように、やり方はひとつではありません。しかも、ここで紹介するテクニックの大半は、OS XやFreeBSDを使っている方にもそのまま応用できます。つまり、コマンドラインからファイルを表示する基本さえ身につければ、ほぼどんなUnix系のプロンプトに出会っても迷わず操作できるようになるということです。方法1:通常のテキストファイルを表示するテキストファイルを表示する最も簡単な方法は、catに続けてファイル名を入力するこ
-
Windows 7 の表示言語を変更する方法|初心者向けステップバイステップガイド
自分が理解しやすい言葉でパソコンを操作できるのは、とても快適なことです。母国語が英語でない場合、英語のインターフェースでは戸惑うことも多いでしょう。しかし、Microsoftは英語以外の言語を話すユーザーにも配慮しており、Windows 7では表示言語を自由に変更できます。 この記事では、Windows 7で表示言語を変更する具体的な手順を、初心者の方にもわかるように丁寧に解説します。 Windows 7で表示言語を変更する手順 コントロールパネルから「地域と言語」ウィンドウを開きます。あるいは、スタートボタンをクリックして検索ボックスに「表示言語の変更(change display lan