問題タブ [c89]
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.
hex - Cでchar*配列の16進値を出力すると、バイナリ入力の奇数値が得られます
これは私を少し困惑させている奇妙な問題です。
このプログラムはC89で記述されており、ファイルを一度に16バイトずつchar *配列に読み込みます(freadとsizeof(char)のサイズを使用)。ファイルは「rb」フラグでfopenされます。次に、配列は、基本的に16の16進値を受け取り、それを文字列に貼り付ける関数に渡されます。各値はスペースで区切られます。
ここで奇妙なことが起こります。この関数は、私が持っているテキストファイル入力に対して、一度に16バイトの素晴らしい16進ダンプを生成します。しかし、小さなビットマップイメージで試してみると、失敗します。88ではなくffffff88のような文字列で出力されてしまいます。
16進値は、sprintf( "%02x"、input [i]);を使用して出力文字列に配置されます。ループで。
一部のファイルではこれが正しく機能するのに、他のファイルでは機能しないのはなぜですか?
c - ANSI C に存在する (または使用されている) 最も一般的な拡張機能はどれですか?
比較表へのリンク、またはメイン コンパイラで利用可能な拡張機能のリストを配置できます。これらのいずれも利用できない場合は、お気に入りのコンパイラで使用または気に入っている拡張機能のリストを作成できます。
c - C99:'for'のブロックの先頭で変数を宣言できますか?
次のコードはC99に従って合法ですか?
3行目より前に、変数xが宣言されていなかったと想定できます。
今まで私は以下を見つけただけですが、これで十分だとは思いません:
ブロックを使用すると、一連の宣言とステートメントを1つの構文単位にグループ化できます。自動保存期間を持つオブジェクトの初期化子、およびブロックスコープを持つ通常の識別子の可変長配列宣言子が評価され、宣言が行われるたびに値がオブジェクトに保存されます(初期化子なしのオブジェクトに不確定な値を格納することを含む)それがステートメントであるかのように実行の順序で、そして宣言者が現れる順序で各宣言内に到達しました。
そのPDFの145ページから。
c - 有害またはサポートされていないと見なされるC99機能
私は通常C89でCコードを記述しますが、C99のいくつかの機能(intxx_t
または__VA_ARGS__
またはsnprintf
)は非常に便利であり、さらに重要になる可能性があります。
C89からC99までの要件をさらに検討する前に、C99のどの機能が広くサポートされているのか、どの機能が広くサポートされていないのか、あるいは有害であるとさえ考えられているのかを知りたいと思いました。
ターゲットコンパイラのサポートを確認するだけでよいことはわかっていますが、これによりサポートが大幅に狭まります。これはオープンソースソフトウェア用であるため、より幅広いサポートが必要です。
たとえば、Solaris(suncc)コンパイラとgccを使用していますが、わずかな労力で互換性を維持できる一方で、他のコンパイラを邪魔にならないようにする可能性があります。
たとえば、私はWindowsで作業したことはなく、Windowsコンパイラについても何も知りませんが、Windowsの互換性を維持することをお勧めします。
c - ANSICを使用してWindowsOSの特定のIPにデータを送信する
コードがプラットフォームに依存しないように、ANSIC標準を使用して特定のIPアドレスでデータまたはパケットを送信したいと思います。winsockなどのWindowsライブラリを使用せずにWindowsOSでどのように可能ですか?ガイドラインやヒントを教えてください。
c - c89およびc99でコンパイルすると、gcc 4.4.2はデフォルトでc99になりますか?
Linuxでgcc4.4.2を使用しています
gccがデフォルトでc99を最新の標準としてコンパイルするように自動的にデフォルト設定されるのだろうか?
c89またはc99のどちらでコンパイルするかを指定するにはどうすればよいですか?
アドバイスをありがとう、
c - AnsicでのMysql接続
私はWindowsプラットフォームのAnsiCで作業しています。mysqlデータベースをcプログラムに接続したい。どうすればそれを可能にすることができるか教えてください。
c89 - C89のアサーション?
MSFT Visual Studio 2010 Beta で C89 を書いています。assert
Java のキーワードに似たアサーションを作成するにはどうすればよいですか? マクロを定義する必要があると思いますが、方法がわかりません。(これは以前に行われたことのように見えるので、自分でロールバックするよりもむしろそれを使用したいと思います。)
推測は次のとおりです。
c - ANSI C(ISO C90):scanfはunsigned charを読み取ったり受け入れたりできますか?
簡単な質問:scanfは、ANSICのunsignedcharに「小さな整数」を読み取って受け入れることができますか?
サンプルコードun_char.c:
コンパイル:
hh
ISOC90ではサポートされていません。では、この状況で使用できるscanf変換は何でしょうか。
c - ルックアップテーブルによるC89のポータブルユーザー定義文字クラス分割、これを行いますか?
これは単なるアイデアです。悪いものですか?