#1
by ヒロ修羅 » 4年前
自分は以下のようなプログラムを作っています。
・古いファイル(A)を読み込む。Aのファイルには”文,小数値A,小数値B”のようになっている。
・Aにある単語を比較ファイル(B)と比較する。Bのファイルには”文(tabによる空白)小数値”のようになっている。
・AとBの単語が同じであればAの小数値AにBの小数値を代入する。
・Aにある単語を比較ファイル(C)と比較する。CのファイルにはBのファイルと同じようになっている。
・AとBの単語が同じであればAの小数値BとCの小数値を代入する。
・出来上がった単語を新しいファイル(D)に書き込む。書き込む際にはAのファイルと同じように書き込む。
・これらをAのファイルがNULLになるまで繰り返す。
このようなプログラムを作成しています。
一応仮ではありますが、作成したソースコードを載せます。
コード:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char origin_word[50];
double origin_happy;
double origin_unhappy;
int old_file_flag;
int new_happy_file_flag;
int new_unhappy_file_flag;
int file_output_flag = 0;
//ファイルのチェック
FILE *File_check(const char fname[],const char mode[])
{
FILE *fp;
fopen_s(&fp,fname,mode);
if(fp == NULL){
printf("ファイルオープン失敗\n");
exit(1);
}
return(fp);
}
//旧ファイルとの比較
void comparison_old_file() {
}
//新幸福ファイルとの比較
double comparison_new_happy_file(char word[30],double happy)
{
FILE *fp;
char h_word[30];
char str[50];
double new_happy;
fp = File_check("New_happy.txt","r");
while (fscanf_s(fp, "%s %lf", h_word, &new_happy,sizeof(str)) == NULL) {
if (strstr(word, h_word) != NULL) {
if (origin_word == h_word) {
strcpy_s(origin_word,word);
}
break;
}
}
fclose(fp);
return(new_happy);
}
//新不幸ファイルとの比較
double comparison_new_unhappy_file(char word[30],double unhappy) {
FILE *fp;
char u_word[30];
char str[50];
double new_unhappy;
fp = File_check("New_unhappy.txt", "r");
while (fscanf_s(fp, "%s %lf", u_word, &new_unhappy,sizeof(str)) == NULL) {
if (strstr(word, u_word) != NULL) {
if (origin_word == u_word) {
strcpy_s(origin_word, word);
}
break;
}
}
fclose(fp);
return(new_unhappy);
}
//ファイルの書き込み
void File_output(void)
{
FILE *fp;
const char *file = "/*個人情報のため隠します。*/";
if (file_output_flag == 0) {
fp = File_check(file,"w");
fprintf_s(fp,origin_word,origin_happy,origin_unhappy);
file_output_flag = 1;
printf("保存できました\n");
}
else {
fp = File_check(file,"a");
fprintf_s(fp,origin_word,origin_happy,origin_unhappy);
}
fclose(fp);
}
//古いファイルと新しいファイルの比較
void old_and_new()
{
FILE *fp;
char word[30];
char str[80];
double happy;
double unhappy;
fp = File_check("social_evaluation.txt","r");
while (fscanf_s(fp, "%s,%lf,%lf", word, &happy, &unhappy,sizeof(str)) != NULL ) {
origin_happy = comparison_new_happy_file(word,happy);
origin_unhappy = comparison_new_unhappy_file(word,unhappy);
File_output;
}
fclose(fp);
}
int main(void)
{
old_and_new();
return 0;
}
開発環境はVisualStudio2015Communityで言語はC言語です。
このプログラムをデバッグすると添付された画像が出てきます。
このようなメッセージ画面が出てきて対処方法に困っています。
どのように対処をすればいいか教えてください。
よろしくお願いします。
- 添付ファイル
-
- エラー.PNG (27.89 KiB) 閲覧数: 15337 回
自分は以下のようなプログラムを作っています。
・古いファイル(A)を読み込む。Aのファイルには”文,小数値A,小数値B”のようになっている。
・Aにある単語を比較ファイル(B)と比較する。Bのファイルには”文(tabによる空白)小数値”のようになっている。
・AとBの単語が同じであればAの小数値AにBの小数値を代入する。
・Aにある単語を比較ファイル(C)と比較する。CのファイルにはBのファイルと同じようになっている。
・AとBの単語が同じであればAの小数値BとCの小数値を代入する。
・出来上がった単語を新しいファイル(D)に書き込む。書き込む際にはAのファイルと同じように書き込む。
・これらをAのファイルがNULLになるまで繰り返す。
このようなプログラムを作成しています。
一応仮ではありますが、作成したソースコードを載せます。
[code]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char origin_word[50];
double origin_happy;
double origin_unhappy;
int old_file_flag;
int new_happy_file_flag;
int new_unhappy_file_flag;
int file_output_flag = 0;
//ファイルのチェック
FILE *File_check(const char fname[],const char mode[])
{
FILE *fp;
fopen_s(&fp,fname,mode);
if(fp == NULL){
printf("ファイルオープン失敗\n");
exit(1);
}
return(fp);
}
//旧ファイルとの比較
void comparison_old_file() {
}
//新幸福ファイルとの比較
double comparison_new_happy_file(char word[30],double happy)
{
FILE *fp;
char h_word[30];
char str[50];
double new_happy;
fp = File_check("New_happy.txt","r");
while (fscanf_s(fp, "%s %lf", h_word, &new_happy,sizeof(str)) == NULL) {
if (strstr(word, h_word) != NULL) {
if (origin_word == h_word) {
strcpy_s(origin_word,word);
}
break;
}
}
fclose(fp);
return(new_happy);
}
//新不幸ファイルとの比較
double comparison_new_unhappy_file(char word[30],double unhappy) {
FILE *fp;
char u_word[30];
char str[50];
double new_unhappy;
fp = File_check("New_unhappy.txt", "r");
while (fscanf_s(fp, "%s %lf", u_word, &new_unhappy,sizeof(str)) == NULL) {
if (strstr(word, u_word) != NULL) {
if (origin_word == u_word) {
strcpy_s(origin_word, word);
}
break;
}
}
fclose(fp);
return(new_unhappy);
}
//ファイルの書き込み
void File_output(void)
{
FILE *fp;
const char *file = "/*個人情報のため隠します。*/";
if (file_output_flag == 0) {
fp = File_check(file,"w");
fprintf_s(fp,origin_word,origin_happy,origin_unhappy);
file_output_flag = 1;
printf("保存できました\n");
}
else {
fp = File_check(file,"a");
fprintf_s(fp,origin_word,origin_happy,origin_unhappy);
}
fclose(fp);
}
//古いファイルと新しいファイルの比較
void old_and_new()
{
FILE *fp;
char word[30];
char str[80];
double happy;
double unhappy;
fp = File_check("social_evaluation.txt","r");
while (fscanf_s(fp, "%s,%lf,%lf", word, &happy, &unhappy,sizeof(str)) != NULL ) {
origin_happy = comparison_new_happy_file(word,happy);
origin_unhappy = comparison_new_unhappy_file(word,unhappy);
File_output;
}
fclose(fp);
}
int main(void)
{
old_and_new();
return 0;
}
[/code]
開発環境はVisualStudio2015Communityで言語はC言語です。
このプログラムをデバッグすると添付された画像が出てきます。
このようなメッセージ画面が出てきて対処方法に困っています。
どのように対処をすればいいか教えてください。
よろしくお願いします。