2つの異なるファイルから読み取り、3番目のファイルに印刷する

ルドルフ

2つの異なるファイルから読み取り、単語を3番目のファイルに出力する必要があります。最初にfile1から読み取り、最初の単語を3番目のファイルに保存し、次にfile2から読み取り、最初の単語をここから3番目のファイルに2番目の単語として保存します。また、file1の単語には単語の先頭に「+」があり、file2の単語には「-」があります。私の問題は、コードが停止せず、まだ機能していて、3番目のファイル "。"(多くのドット)に出力されることです。ありがとう

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

int main(){
    FILE *first, *second, *third;
    char ch[256],ch1[256],ch2;
    int i=1,count;
    char space = ' ';
    char minus = '-';
    char plus = '+';

    first=fopen("prvy.txt", "r");
    second=fopen("druhy.txt", "r");
    third=fopen("treti.txt", "w");

        if(first==NULL || second==NULL || third==NULL)
        {
        printf("error");
        exit(1);
        }

        while (fscanf(first, "%255s", ch) == 1)
        {
            count++;
        }

        while (fscanf(second, "%255s", ch) == 1)
        {
            count++;
        }

        printf("%d",count);

        for(i;i<=count;i++)
        {
            if(i%2==1)
            {
                fputc(plus,third);
                ch2=fgetc(first);
                while(ch2 != EOF || ch2 != ' ')
                    putc(ch2,third);
                    ch2=fgetc(first);
            }
            else if(i%2==0)
            {
                fputc(minus,third);
                ch2=fgetc(second);
                while(ch2 != EOF || ch2 != ' ')
                    putc(ch2,third);
                    ch2=fgetc(second);
            }
                fputc(space,third);         
        }


    fclose(first);
    fclose(second);
    fclose(third);

    return 0;
}
dbush

whileここで2つのループを見てください:

        if(i%2==1)
        {
            fputc(plus,third);
            ch2=fgetc(first);
            while(ch2 != EOF || ch2 != ' ')
                putc(ch2,third);
                ch2=fgetc(first);
        }
        else if(i%2==0)
        {
            fputc(minus,third);
            ch2=fgetc(second);
            while(ch2 != EOF || ch2 != ' ')
                putc(ch2,third);
                ch2=fgetc(second);
        }

最初の問題は、それch2 != EOF || ch2 != ' 'が常に真実であるということです。場合はch2EOFで、最初の条件はfalseですが、2番目は本当です。場合はch2スペースである、第2の条件は偽となり、最初はtrueになります。どちらでもない場合は、両方とも当てはまります。

あなたはかどうかを確認したいchです両方ないEOFおよびないスペース:

while(ch2 != EOF && ch2 != ' ')

これなければ、これ機能します:

char ch[256],ch1[256],ch2;

あなたはしているch2として定義されcharながら、fgetcリターンintEOFがの範囲外であるため、その値が表示されるcharことはありません。次のように変更しintます:

char ch[256],ch1[256]
int ch2;

あなたのwhileループはまた、それらの周りのすべての括弧を持っていません。つまり、実際に持っているのは次のとおりです。

            while(ch2 != EOF || ch2 != ' ') {
                putc(ch2,third);
            }
            ch2=fgetc(first);

ch2ループ内で変更されることはないため、無限ループになります。それらが属する場所に中括弧を置きます:

        if(i%2==1)
        {
            fputc(plus,third);
            ch2=fgetc(first);
            while(ch2 != EOF && ch2 != ' ') {
                putc(ch2,third);
                ch2=fgetc(first);
            }
        }
        else if(i%2==0)
        {
            fputc(minus,third);
            ch2=fgetc(second);
            while(ch2 != EOF && ch2 != ' ') {
                putc(ch2,third);
                ch2=fgetc(second);
            }
        }

この上に、ファイルの両方のためのポインタfirstとは、secondあなたが入力する前に、各ファイルの末尾にあるforループを、そう読んでするものは何もありません。

あなたは、呼び出す必要がありますrewind(first)し、rewind(second)このループに入る前に。

最後に、countは初期化されません。ランダムに多数が含まれている可能性があるため、ループは意図したよりも何度も実行される可能性があります。

必ず0に設定してください。

int i=1,count=0;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ファイルから文字列を読み取り、2番目のファイルの各行と比較する方法

分類Dev

1行目、2行目、3行目ごとにtxtファイルを読み取り、3つの異なるリストに保存します

分類Dev

csvファイルの2番目の列をUnix時間から読み取り可能な日付/時間に変換するBashスクリプト

分類Dev

csvファイルの2番目の列をUnix時間から読み取り可能な日付/時間に変換するBashスクリプト

分類Dev

ファイルから2つの列を読み取り、3番目の列に値を書き込みます

分類Dev

Cのファイルからさまざまな値を読み取り、条件に基づいて印刷する

分類Dev

C ++基本的なテキストファイルからテキストを読み取り、2つの異なる配列に格納する方法

分類Dev

csvファイルから2番目の(循環)ヒストグラム読み取りを追加するにはどうすればよいですか?

分類Dev

2つのファイルを比較し、最初のファイルにのみ一致する2番目のファイルを印刷する方法

分類Dev

1 つのファイルからのインデックス値を使用して awk 印刷し、2 番目のファイルからデータを抽出し、3 番目のファイルに出力を保存する方法は?

分類Dev

1つのファイルを読み取り、2番目のファイルのパターンを削除するsed

分類Dev

ファイルからの読み取りに関する奇妙な問題

分類Dev

ファイルの最後から2番目の行のみを読み取る方法

分類Dev

ファイルの最後から2番目の行のみを読み取る方法

分類Dev

ファイルから2つの配列を読み取る

分類Dev

読み取りと書き込み用に2つの異なるファイルを作成するのは良い考えですか?

分類Dev

PHPでファイルから読み取るときに2つの区切り文字を使用する方法

分類Dev

2つの.txtファイルを読み取り、その中のデータにアクセスしてから印刷する

分類Dev

ファイルから中国語のテキストを読み取り、シェルに印刷する

分類Dev

2つの異なるソース(XMLファイルとExcelシート)から読み取られたXSLT

分類Dev

ファイルからの読み取りによるNoSuchElementException

分類Dev

csvファイルを読み取り、いくつかの操作後にデータを印刷する方法は?

分類Dev

2 つの txt ファイルを読み取り、Python を使用して結果を 3 番目のファイルに書き込む方法

分類Dev

Pythonの2行目からファイルを読み取ります

分類Dev

ファイルの読み取りに関するいくつかの問題

分類Dev

テキストファイルの最後から2番目の行を読み取るにはどうすればよいですか?

分類Dev

2つのファイルから1つの列を3番目のファイルに結合します

分類Dev

2つのファイルから1つの列を3番目のファイルに結合します

分類Dev

コードを複製せずに、2つの異なるCSVファイルから読み取り、2つの異なる配列を作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    ファイルから文字列を読み取り、2番目のファイルの各行と比較する方法

  2. 2

    1行目、2行目、3行目ごとにtxtファイルを読み取り、3つの異なるリストに保存します

  3. 3

    csvファイルの2番目の列をUnix時間から読み取り可能な日付/時間に変換するBashスクリプト

  4. 4

    csvファイルの2番目の列をUnix時間から読み取り可能な日付/時間に変換するBashスクリプト

  5. 5

    ファイルから2つの列を読み取り、3番目の列に値を書き込みます

  6. 6

    Cのファイルからさまざまな値を読み取り、条件に基づいて印刷する

  7. 7

    C ++基本的なテキストファイルからテキストを読み取り、2つの異なる配列に格納する方法

  8. 8

    csvファイルから2番目の(循環)ヒストグラム読み取りを追加するにはどうすればよいですか?

  9. 9

    2つのファイルを比較し、最初のファイルにのみ一致する2番目のファイルを印刷する方法

  10. 10

    1 つのファイルからのインデックス値を使用して awk 印刷し、2 番目のファイルからデータを抽出し、3 番目のファイルに出力を保存する方法は?

  11. 11

    1つのファイルを読み取り、2番目のファイルのパターンを削除するsed

  12. 12

    ファイルからの読み取りに関する奇妙な問題

  13. 13

    ファイルの最後から2番目の行のみを読み取る方法

  14. 14

    ファイルの最後から2番目の行のみを読み取る方法

  15. 15

    ファイルから2つの配列を読み取る

  16. 16

    読み取りと書き込み用に2つの異なるファイルを作成するのは良い考えですか?

  17. 17

    PHPでファイルから読み取るときに2つの区切り文字を使用する方法

  18. 18

    2つの.txtファイルを読み取り、その中のデータにアクセスしてから印刷する

  19. 19

    ファイルから中国語のテキストを読み取り、シェルに印刷する

  20. 20

    2つの異なるソース(XMLファイルとExcelシート)から読み取られたXSLT

  21. 21

    ファイルからの読み取りによるNoSuchElementException

  22. 22

    csvファイルを読み取り、いくつかの操作後にデータを印刷する方法は?

  23. 23

    2 つの txt ファイルを読み取り、Python を使用して結果を 3 番目のファイルに書き込む方法

  24. 24

    Pythonの2行目からファイルを読み取ります

  25. 25

    ファイルの読み取りに関するいくつかの問題

  26. 26

    テキストファイルの最後から2番目の行を読み取るにはどうすればよいですか?

  27. 27

    2つのファイルから1つの列を3番目のファイルに結合します

  28. 28

    2つのファイルから1つの列を3番目のファイルに結合します

  29. 29

    コードを複製せずに、2つの異なるCSVファイルから読み取り、2つの異なる配列を作成するにはどうすればよいですか?

ホットタグ

アーカイブ