テキストファイルを開き、ファイルから読み取り、大文字を小文字に変更し、その単語がファイル内で何回出現したかを数え、結果を新しいテキストファイルに出力するプログラムを作成しようとしています。
これまでの私のコードは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
int main()
{
FILE *fileIN;
FILE *fileOUT;
char str[255];
char c;
int i = 0;
fileIN = fopen ("input.txt", "r");
fileOUT = fopen ("output.txt", "w");
if (fileIN == NULL || fileOUT == NULL)
{
printf("Error opening files\n");
}
else
{
while(! feof(fileIN)) //reading and writing loop
{
fscanf(fileIN, "%s", str); //reading file
i = 0;
c = str[i];
if (isupper(c)) //changing any upper case to lower case
{
c =(tolower(c));
str[i] = putchar(c);
}
printf("%s ", str); //printing output
fprintf(fileOUT, "%s\n", str); //printing into file
}
fclose(fileIN);
fclose(fileOUT);
}
getch();
}
input.txt ファイルには、「スペインの雨は主に飛行機に降る」という内容が含まれています。理由は聞かないでください。プログラムをそのまま実行すると、出力は次のようになります。スペインの雨は主に飛行機に降る
大文字の単語を小文字にすることができました。各単語の出現回数を数える方法を理解するのに苦労しています。たとえば、出力では、2 が表示されたことを意味する「the 2」と表示する必要があります。これは、そのファイルにこれ以上「the」を保存したくないことも意味します。
strcmp と strcpy を考えていますが、それらを希望どおりに使用する方法がわかりません。
助けていただければ幸いです
(フォーマットが悪い場合は申し訳ありません)