重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【6/2終了】教えて!gooアプリ版

inputA.csvには以下のように年月日のみのデータが2列入っております。inputBには2001年1月1日から2014年12月31日までのある商品の価格のデータ(毎日)が入っております。
私はinputAの各行・各列の年月日と等しいものをinputBから検索し、年月日が一致したら、その年月日におけるある商品の価格を理想のoutputのように出力したいと考えています。順番としては、「年月日(L),年月日(R),価格(L),価格(R)」というようにinputAにおける年月日の(L)と(R)と価格が対応するように出力したいです。
しかし、現状のプログラムでは上手くいっておりません。改善点もしくはより良いプログラムがあれば教えていただければ幸いです。
よろしくお願い申し上げます。


/******inputA********/
2001/9/6,2001/10/19
2002/2/22,2002/3/5
2002/3/17,2002/5/2
2001/11/2,2002/1/18
2002/12/31,2003/1/31
2001/5/18,2001/7/24
2001/9/28,2001/10/28
2001/2/8,2001/4/2
2002/12/30,2003/2/4
2001/8/29,2001/10/6
2001/1/1,2001/5/7
2002/10/9,2002/12/25
2001/11/6,2001/12/28
2002/6/12,2002/9/23
2001/5/9,20001/6/3
2002/5/8,2002/6/9




/******inputA********/

/******inputB********/
2001/1/1,135
2001/1/2,125
2001/1/3,125
2001/1/4,126
2001/1/5,127
2001/1/6,127
2001/1/7,124



/******inputB********/

/******理想のoutput********/
2001/9/6,2001/10/19,134,136
2002/2/22,2002/3/5,142,138
2002/3/17,2002/5/2,123,125
2001/11/2,2002/1/18,132,130
2002/12/31,2003/1/31,130,128
2001/5/18,2001/7/24,126,129
2001/9/28,2001/10/28,123,125
2001/2/8,2001/4/2,125,125
2002/12/30,2003/2/4,134,135
2001/8/29,2001/10/6,137,133
2001/1/1,2001/5/7,125,124
2002/10/9,2002/12/25,134,129
2001/11/6,2001/12/28,132,136
2002/6/12,2002/9/23,124,129
2001/5/9,20001/6/3,134,130
2002/5/8,2002/6/9,132,132





/******理想のoutput********/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main(void){

FILE *inputA;
FILE *inputB;
FILE *output;

char year_L[15],yearR[15];
char year_search[15];
char price[15];
char *price_L,*price_R;

priceb = price;
pricea = price;


if((output = fopen("output.csv", "w"))==NULL){
printf("can't open\n");
}


if((inputA = fopen("inputA.csv","r"))==NULL){
printf("not found A\n");
}
if((inputB = fopen("inputB.csv","r"))==NULL){
printf("not found B\n");
}


while(1){
if(fscanf(inputA,"%[^,],%s\n",year_L,year_R)==EOF) {
break;
}
fseek(inputB, 0, SEEK_SET);
while (1) {
if(fscanf(inputB,"%[^,],%s\n",year_search, price)==EOF) {
break;
}
if((strcmp(year_L,year_search)==0)&&(strcmp(year_R,year_search)==0)){
fprintf(output,"%s,%s,%s,%s\n",year_L,year_R,price_L,price_R);
break;
}
}
}

fclose(inputA);
fclose(inputB);
fclose(output);


return 0;
}

A 回答 (1件)

> if((strcmp(year_L,year_search)==0)&&(strcmp(year_R,year_search)==0)){


↑この構文が成立することはありえません。
変数year_Lと変数year_Rには違う値が代入されているのに、一つのyear_searchで比較しているので、この if 文が成立することはありません。
添付のようにしてみては如何ですか。
「C言語を用いて、2つのファイルから年月日」の回答画像1
    • good
    • 0
この回答へのお礼

迅速に対応していただき感謝申し上げます。

理解できました。

本当に有難うございます。

お礼日時:2015/10/18 13:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!