【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.20952

文字列
投稿者---ショウ(2005/05/05 20:24:59)


moji.txt
mojiretsu1
mojiretsu2
mojiretsu3
mojiretsu4
mojiretsu5

file.txt
warpture1
warpture2
warprure3
warpture4
warpture5

上のような二つのファイルがあって
新しいファイルにこの2つのファイルから抽出した文字列を交互に表示したいんですが、いっぱつで上手くいく関数って存在するのでしょうか?

結果として
print.txt
mojiretsu1
warpture1
mojiretsu2
warpture2
mojiretsu3
warpture3
mojiretsu4
warpture4
mojiretsu5
warpture5

というような結果を得たいんですけど。
windows2000 で Microsoft VisualC++ を使ってます。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:文字列 20953 とおりすがり 2005/05/05 20:29:07
<子記事> Re:文字列 20954 まきじ 2005/05/05 21:15:56
<子記事> Re:文字列 20970 まきじ 2005/05/06 23:31:17


No.20953

Re:文字列
投稿者---とおりすがり(2005/05/05 20:29:07)


>上のような二つのファイルがあって
>新しいファイルにこの2つのファイルから抽出した文字列を交互に表示したいんですが、いっぱつで上手くいく関数って存在するのでしょうか?

そんな都合のよい関数はありません。
いろいろな人のいろいろなニーズを一発で満たせるような関数が逐一用意されて
いたら、全く切りがありません。
既存の関数等を組み合わせて、自分で作りましょう。


この投稿にコメントする

削除パスワード

No.20954

Re:文字列
投稿者---まきじ(2005/05/05 21:15:56)


>新しいファイルにこの2つのファイルから抽出した文字列を交互に表示したいんですが、いっぱつで上手くいく関数って存在するのでしょうか?

交互に、moji.txt と file.txt を読み込ん(fgets)で、print.txt に
書き込め(fputs)ばよい。


この投稿にコメントする

削除パスワード

No.20955

Re:文字列
投稿者---ショウ(2005/05/05 21:37:44)


>>新しいファイルにこの2つのファイルから抽出した文字列を交互に表示したいんですが、いっぱつで上手くいく関数って存在するのでしょうか?
>
>交互に、moji.txt と file.txt を読み込ん(fgets)で、print.txt に
>書き込め(fputs)ばよい。

fputs で書き込んだだけじゃ、交互に表示されなくないですか?


この投稿にコメントする

削除パスワード

No.20956

Re:文字列
投稿者---もぐりん(2005/05/05 21:46:57)


>>>新しいファイルにこの2つのファイルから抽出した文字列を交互に表示したいんですが、いっぱつで上手くいく関数って存在するのでしょうか?
>>
>>交互に、moji.txt と file.txt を読み込ん(fgets)で、print.txt に
>>書き込め(fputs)ばよい。
>
>fputs で書き込んだだけじゃ、交互に表示されなくないですか?

例えば、moji.txtの内容を行単位でaaaという2次元配列に格納して、
file.txtの内容を行単位にbbbという2次元配列に格納すれば、
配列aaaとbbbの中身を交互にfputsするだけでしょ。




この投稿にコメントする

削除パスワード

No.20957

Re:文字列
投稿者---ショウ(2005/05/05 22:26:45)


>>>>新しいファイルにこの2つのファイルから抽出した文字列を交互に表示したいんですが、いっぱつで上手くいく関数って存在するのでしょうか?
>>>
>>>交互に、moji.txt と file.txt を読み込ん(fgets)で、print.txt に
>>>書き込め(fputs)ばよい。
>>
>>fputs で書き込んだだけじゃ、交互に表示されなくないですか?
>
>例えば、moji.txtの内容を行単位でaaaという2次元配列に格納して、
>file.txtの内容を行単位にbbbという2次元配列に格納すれば、
>配列aaaとbbbの中身を交互にfputsするだけでしょ。
>

行単位で格納するにはどう宣言するば良いのでしょうか?


この投稿にコメントする

削除パスワード

No.20958

Re:文字列
投稿者---まきじ(2005/05/05 22:51:57)


>行単位で格納するにはどう宣言するば良いのでしょうか?

fgets を使えば、読み込めます。
配列に格納しなくても、読みながら書き出せば良いと思います。

その他に、fputs,fopen,fclose を使えば作れるはずです。

関数の仕様についてMSDNで調べたら良いと思います。
http://www.microsoft.com/japan/msdn/library/


この投稿にコメントする

削除パスワード

No.20959

Re:文字列
投稿者---YuO(2005/05/05 23:02:16)


>fputs で書き込んだだけじゃ、交互に表示されなくないですか?

なぜ?

moji.txtから1行目を読み込んでfputsで出力。
file.txtから1行目を読み込んでfputsで出力。
moji.txtから2行目を読み込んでfputsで出力。
file.txtから2行目を読み込んでfputsで出力。

どう見ても交互に出力されていますが。



この投稿にコメントする

削除パスワード

No.20970

Re:文字列
投稿者---まきじ(2005/05/06 23:31:17)


>新しいファイルにこの2つのファイルから抽出した文字列を交互に表示したい

#include<stdio.h>

#define N 256

int main(void){

    FILE *moji_fp, *file_fp, *print_fp;
    char str[N];
    
    if((moji_fp=fopen("moji.txt","r"))==NULL)return 1;
    if((file_fp=fopen("file.txt","r"))==NULL){
        fclose(moji_fp);
        return 1;
    }
    if((print_fp=fopen("print.txt","w"))==NULL){
        fclose(moji_fp);
        fclose(file_fp);
        return 1;
    }
    
    //交互に読み書き

    while(fgets(str,N,moji_fp) != NULL){
        fputs(str,print_fp);
        if(fgets(str,N,file_fp) != NULL) fputs(str,print_fp);
    }
    
    fclose(moji_fp);
    fclose(file_fp);
    fclose(print_fp);
}



この投稿にコメントする

削除パスワード

No.20971

Re:文字列
投稿者---とおりすがり2(2005/05/07 02:11:37)


先日、管理人さんの意見が示されたと思ったのに、また回答丸投げですか…
各回答者がいろいろな意見を持っているのは構わないが、この掲示板で
その実践が許されるか否かは、管理人次第でしょ?
で、以下の意見が出たはずなのに、どうして?
論理展開が理解できないっす…

http://www2.realint.com/cgi-bin/tarticles.cgi?pointc+20887


この投稿にコメントする

削除パスワード

No.20976

Re:文字列
投稿者---まきじ(2005/05/07 13:06:19)


おしゃべり掲示板の方にレスしました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧