※ ChatGPTを利用し、要約された質問です(原文:ファイル操作のプログラムについて)
ファイル操作のプログラムで文字列が一致する行を出力する方法とは?
このQ&Aのポイント
sample1.txtとsample2.txtの中から、1列目の文字列が一致する行をつなげて出力するプログラムを作成しましたがうまく動作しません。何が原因なのか教えてください。
sample1.txtとsample2.txtの中から、1列目の文字列が一致する行を出力するためのプログラムを作成しましたが、正しく動作しません。どうすれば解決できるでしょうか?
ファイル操作のプログラムで、sample1.txtとsample2.txtの1列目の文字列が一致する行を出力する方法について質問です。現在書いているプログラムがうまく機能していないので、何が原因なのか教えてください。
下記のsample1.txtの1列目とsample2.txtの1列目の文字列が一致する行をつなげて出力するプログラムを組みたいと思い、test.cを書きましたが、うまく動きませんでした。これは何が原因なのでしょうか。
回答よろしくお願いします。
-------------------sample1.txt--------------------
J02220-2222 3.999 null
J03424-2222 900.0 0.43
J03666-2223 30.0 0.23
J04000-4422 98.0 0.43
-------------------sample2.txt--------------------
J03424-2222 900.0 0.43
J03342-4423 4.000 0.99
J02220-2222 3.999 null
-------------------test.c---------------------------
#include<stdio.h>
int main(void)
{
FILE *fp ,*gp;
int ret;
char xl[30],nx1[30],xb[30];
char xls[30],nx2[30],xlb[30];
fp=fopen("sample1.txt","r");
gp=fopen("sample2.txt","r");
while(fscanf (fp,"%s%s%s",xl,nx1,xb)==3){
while(fscanf (gp,"%s%s%s",xls,nx2,xlb)==3){
ret=strcmp(xl,xls);
if(ret == 0){
printf("%s\t%s\t%s\t%s\t%s\t%s\n",xl,nx1,xb,xls,nx2,xlb);
}
}
}
fclose(fp);
return 0;
}
インデントが反映されいなかったらすいません。
------------出力結果-------------------
J02220-2222 3.999 null J02220-2222 3.999 null
-----------望む出力結果--------------
J02220-2222 3.999 null J02220-2222 3.999 null
J03424-2222 900.0 0.43 J03424-2222 900.0 0.43
お礼
出来ました!ずっと悩んでいたので、本当にありがとうございました。