intさわだんのBlack History

刹那的レジェンドになりたい。

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;
}