fgetsの扱い方について
今回、c++(言語はc言語)?で下のようなプログラムを書きました。
内容は、与えられたワイド文字列をマルチバイト文字列に変換した後、重要単語.txtに載っている単語が変換された文字列にあるか、を調べるものです。
ただ、実行できていないためプログラム自体があっているかわかりません。
これをvc++2010でエラーなくビルドしたあと、実行すると「ハンドルされていない例外が発生しました」とエラーが出ます。
使い方もよくわかってないブレークポイントを使って調べてみたところ、while(fgets(word,50,fp)!=NULL){ ここまで来るとエラーが発生してるみたいです。
なにが間違ってるんでしょうか?
解決策よろしくお願いします
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <stdlib.h>
int main(){
setlocale( LC_ALL, "Japanese");
FILE *fp;
fp=fopen("重要単語.txt", "w");
fclose(fp);
if( (fp=fopen("重要単語.txt", "r")) ==NULL){
printf("File Not Open!!\n");
}
wchar_t *input = L"音声認識を認識した後に変換を行う";
char str[200];
char word[50];
char iword[100]="●";
int pt=0,pp=0,cnt=0,i=0;
//str=input;wchar_t→char変換する
size_t wlen=0;
wcstombs_s(&wlen,str,500,input,_TRUNCATE);
while(fgets(word,50,fp)!=NULL){
strcat(word,'\0');
while(str[pt]!='\0'){
if(word[pp]=='\0'){
pp=0;
strcat(iword,word);
strcat(iword,"\n");
}
else if(str[pt]==word[pp]){
pt++;
pp++;
}
else{
pt=pt-pp+1;
pp=0;
}
}
pt=0;
}
fclose(fp);
printf("変換後→%s\n",str);
printf("重要単語\n%s",iword);
return 0;
}
重要単語.txtの中身
認識
音声
変換
お礼
回答ありがとうございます。 何とか解決することができました。