問題タブ [fgetc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
54 参照

c - C での行末後の読み取りに関する問題

そのため、ファイルからの読み取りに問題があります。

このファイルを読みたいです。

最初の 1 はプレイヤーで、配列はゲーム ボードです。

だから私はこのコードを使ってこれをすべて読もうとしています:

私の問題は、-16 や -38 のように、それぞれが Space と LF を参照するように、配列の外側に値を取得することがあるということです。したがって、私の質問は次のとおりです。これらの -16 および -38 に遭遇しないようにするにはどうすればよいですか?

どうもありがとうございました。英語の間違いについては事前に申し訳ありません

0 投票する
0 に答える
111 参照

c - fgetc が無効な文字を取得する

私は、修正された Vigenére 暗号を使用する暗号化/復号化プログラムに取り組んでいます。つまり、5文字を暗号化/復号化した後、Vigenere正方形を切り替えます。テキストが短い場合はうまく機能しますが、テキストが長い場合、 fgetc() は無効な値を返し始めます。ファイルに実際に存在する値ではないかのように、復号化しようとしています。時々 -1 を返し始め、時には無効な文字だけを返します。テキストエディタでファイルをチェックすると、そこに何か他のものがあるという意味で無効です。コードを実行すると、ファイルは 2 つのデバッグ ファイルを作成し、1 つのファイルが出力したものと別のファイルが取得したものを比較できます。このブレークダウンは通常 250 文字以上で発生するようですが、まったく同じポイントでは発生しないようです。(私は300を超えるファイルを持っていましたが、それでも動作します)。

暗号化するコード:

復号化のコードは次のとおりです。

0 投票する
1 に答える
8904 参照

c - C-最初のコマンドライン引数の最初の文字に特定の文字が含まれているかどうかを確認する

最初の引数の最初の文字 == "-" の場合は、if ステートメントを入力します。私が得るエラーは、「 'strcmp'の引数1を渡すと、キャストなしで整数からポインターが作成されます」というものです.fgetcでこれを試してみましたが、少し違った書き方をしましたが、それでもこのエラーが発生します. キャストすると、コアダンプが発生します。引数にダッシュが含まれている場合、同じ引数内に数字が続くため、argv[1] を単一の文字として見ることはできません。条件が次のように単純である場合:if (strcmp(argv[1], "-")==0)

関数

ご協力ありがとうございました

0 投票する
2 に答える
5370 参照

c - STDIN を使用して fgetc() バッファーで EOF を見つけることができません

EDIT
問題の解決策は、Ctrl-D が実際に行っていたことを理解することでした。
新しい空の行では、単一の Ctrl-D が EOF を通知します。
ただし、行にすでに文字がある場合、最初の Ctrl-D によって、行の内容が画面にエコーされます (ただし、 には書き込まれませんSTDOUT)。文字がすでにバッファにある場合は、2 回目の Ctrl-D を signalEOFに発行して、バッファを に書き込む必要がありますSTDOUT
これは、出力をファイルにリダイレクトすることで実証できます。
編集

から入力を読み取るために fgetc() を使用していますstdin。EOF を受け取るまでループします。ループでは、Ctrl-D が押される前に入力された文字に基づいて文字列を作成します。しかし、ch = fgetc() が読み取るバッファには EOF が含まれていないため、ループを終了する方法がわかりません。(EOF は、最初の値を返すために fgetc() のみをトリガーします。)

ungetc() は EOF をバッファにプッシュすることを許可しません。他の文字をプッシュすると、実際のデータと混同する危険性があります。私は多くの回答を読みましたが、それらはこの問題に対処していないか、実装しようとしているユースケースには当てはまりません。

stdin バッファーでカウント、ピークなどを実行できるようにしたいと考えています。

fgetc() から到着 ( edit )するたびに各文字を処理しているため、行全体 (または一度に X 文字) を読みたくありません。

このジレンマを克服する方法について何か提案はありますか? (NCurses を使用しない場合)

私はUbuntuを使用しています。EOF = Ctrl-D ここに私が取り組んでいるいくつかのコードがあります:

これは機能し、ジョナサンの単純な例と同じですが、私が望むものではありません:

ただし、これはスタックしていますが、やりたいことを実行しようとしています ( edit ) が、もう一度 Ctrl-D が必要です:

質問されたその他のコード:

以下のこのバージョンは、入力文字を 1 文字ずつ処理し、 と同じように機能しcatます。しかし、実装する必要がある追加の変換を適用する前に、最初に各文字を行に処理することにしました。これによりステートマシンの設計が簡素化されましたが、(NCurses を使用せずに) ラインを構築しようとするのは適切なオプションではなかったかもしれません。:(

0 投票する
1 に答える
185 参照

c++ - C ++はfgetsで別の行を読み取ります

nintendo ds 用に C++ でコーディングしており、テキスト ファイルにアクセスするには「FILE」タイプを使用する必要があります。そのため、fgets を使用してテキスト ファイルの内容を表示していますが、ドキュメントを見て、最初の行以外の内容を表示する方法がわかりません。

そのようなことを行う別のコマンドはありますか、または fgets に別の行を読み取らせる方法はありますか?

0 投票する
2 に答える
421 参照

c - fgetc() を使用してファイルから読み取るときの奇妙な終了値

fgetc()数字のみで構成されるファイルから char を読み取るために使用しています。次に、文字を int に変換して出力します。それはいいです。しかし、すべての数字を出力した後、最後に-38-49値を取得します。私はそれをグーグルで検索しましたが、そこには何もありませんでした。入力ファイルには次のものがあります:0105243100000002200000010001318123 出力パフは次のようになります:0105243100000002200000010001318123-38-49 私のコード:

0 投票する
1 に答える
28 参照

linux - ファイルまたは stdin からテキスト行を安全かつ簡単に読み取るにはどうすればよいですか?

fgets には改行が含まれる場合があり、fscanf は本質的に安全ではないため、ファイルからテキストを 1 行ずつ読み取る簡単な代替手段が必要です。このページはそのような機能を見つけるのに適した場所ですか?

0 投票する
0 に答える
120 参照

c - 興味深いセグメンテーション違反

エラーなしでうまく動作するプログラムを書きました。テキスト ファイルを読み取り、内容を配列に書き込みます (行ごとに、この行の文字列を 1 つずつ区切ります)。次に、2 番目のテキスト ファイルを追加し、再度コンテンツを読み取ろうとしましたが、プログラムをデバッグするときにのみ報告されるクレイジーなセグメンテーション エラーが発生しました。

これは、エラーの原因となるプログラムの一部です。

まず、バッファを割り当てようとするとセグメンテーション違反が発生しchar *buffervr = (char *)malloc(size);ます。配列を割り当てる前にこれを行うと、float taz[5000], tel[5000], ttime[5000], tvr[5000][nbins], tdbz[5000][nbins];機能しますか?!

c = fgetc(vrFile);2つ目は、ファイルを開くことはできますが、ファイルを読み取る ことができないことです。ここで、別のセグメンテーション違反が発生しますか?!

誰かが私にそれが間違っていたことを教えてもらえますか?

ありがとうございました!

編集:実際のコード:

注: time、lat、lon、az、el、および vr はポインターです。

編集:私はこの方法で問題を解決しました:

vrFile = fopen("file.txt","r");

0 投票する
1 に答える
87 参照

c - ファイルの最初の 5 文字が印刷されない

ファイルから読み取って結果を出力するループは、読み取ったすべてのファイルの最初の 5 文字を出力しません。一度に 1 文字ずつ出力すると問題なく動作しますが、後で処理する必要があるファイルから浮動小数点数を読み取っています。数字は空白で区切られているため、空白が発生した場合にのみ印刷しようとしています。

ここに私のソースコードがあります

0 投票する
1 に答える
501 参照

c - C でファイル内の文字数を数える - 非常に基本的な

ファイルを扱うのは久しぶりで、大まかなアイデアはわかりましたが、単純なアルゴリズムの実装に問題がありました。

たとえば、特定のファイルの文字数をカウントするコードを作成しようとしています。文字数。

これは私のコードです:

実行すると、次のようなエラーが発生します。

デバッグ アサーションに失敗しました!

式(ストリーム!=NULL)

方法については...

なぜこれが起こり、どうすれば修正できますか?