C言語の問題がわかりません。
C言語の問題がわかりません。
ファイルを読み込んで、文字数と単語数を数えるプログラムなのですが、
例えば、ファイルが
「I was born in Japan
I like baseball」でしたら、
1:I was born in Japan
19文字、5単語
2:I like baseball
15文字、3単語
と表示したいのですが、下記のプログラムのままだと、
1:I was born in Japan
20文字、5単語
2:I like baseball
15文字、3単語
と作った文章の改行の部分を認証してしまいます。
改行の部分を認証しないようにこれを修正するにはどうしたらいいでしょうか?
また、もう一つあるのですが、結果の文章を
1:napaJ・・・
2:・・・ekil I
と行ごとに逆に表示したいのですが、どうすれば逆に表示できますでしょうか?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void) {
FILE *fin;
char filename[20];
char data[256], *abc;
int a,b,n;
printf("ファイル名の入力 :");
scanf("%s", filename);
fin=fopen(filename,"r");
if(fin == NULL){
printf("%sがオープンできません!\n",filename);
exit(1);
}
a=0;
b=0;
n=0;
while(fgets(data,256,fin) != NULL) {
a=a+1;
b=strlen(data);
abc = data;
*(abc - 2) = '\t';
while (*abc == ' ') {abc++;}
while (*abc != '\0') {
while (*abc != '\0' && !(*abc == ' ' || *abc == '\t' || *abc == ',' || *abc == '.')){abc++;}
n = n+1;
while (*abc != '\0' && (*abc == ' ' || *abc == '\t' || *abc == ',' || *abc == '.')) {abc++;}
}
printf("%d:%s\n",a,data);
printf("%d文字、%d単語\n",b,n);
n=0;
}
fclose(fin);
return 0;
}
お礼
A:接吻 B:愛撫 C:性交 D:妊娠 …ですか。 有難う御座いました。