1
テキスト内容が、
abc def g
hij
kl
mn op
のとき改行部分をスペースに変えて
abc def g hij kl mn op
とし、一行の文字列としてstr[200]に入れる。
int word_count(char str[])はわりと簡単でそれぞれの単語の終わりの部分を確認してるだけ。
テキストファイルを読み込む部分はここを完全にパクった。⇓
【C言語】fscanfとwhileを使ってテキストファイルを読み込む win7 32bit - Qiita
#include <stdio.h> #include <string.h> int word_count(char str[]){ int ans = 0,i; for(i = 0;i < strlen(str);i++){ if(str[i] != ' ' && str[i+1] == ' ')ans++; } return ans; } int main() { char str[200],tmp[200],file_name[100]; int nau = 0,i,len; FILE *f; printf("Input file name : "); scanf("%s",file_name); if((f = fopen(file_name, "r")) == NULL){ printf("File not found\n"); return 0; } while (fscanf(f, "%s", tmp) != EOF){ int len = strlen(tmp); for(i = 0;i < len;i++){ str[nau + i] = tmp[i]; } str[nau+i] = ' '; nau += (len + 1); } printf("Number of words in %s : %d\n",file_name,word_count(str)); fclose(f); return 0; }
確認用のコメントありのやつ
#include <stdio.h> #include <string.h> int word_count(char str[]){ int ans = 0,i; for(i = 0;i < strlen(str);i++){ if(str[i] != ' ' && str[i+1] == ' ')ans++; } return ans; } int main() { char str[200],tmp[200],file_name[100]; int nau = 0,i,len; FILE *f; printf("Input file name : "); scanf("%s",file_name); if((f = fopen(file_name, "r")) == NULL){ printf("File not found\n"); return 0; } while (fscanf(f, "%s", tmp) != EOF){ int len = strlen(tmp); // printf("%d : %s\n",len,tmp); for(i = 0;i < len;i++){ str[nau + i] = tmp[i]; // printf("%c",str[nau+i]); } str[nau+i] = ' '; nau += (len + 1); // printf("nau : %d\n",nau); } printf("Number of words in %s : %d\n",file_name,word_count(str)); // printf("%s\n",str); /* for(i = 0;i < strlen(str);i++){ printf("%c",str[i]); } */ return 0; }