トップページ⇒tech
1001コメント265KB

C言語なら俺に聞け! Part 82

レス数が1000を超えています。これ以上書き込みはできません。
0001v(^o^i)dNGNG
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

コンパイラを探しているなら >>2-13 を。
上記を逸した場合の結果は激しく未定義だYO!

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

各種リンクは>>3-20あたり(誰か適当に貼って)

C言語なら俺に聞け! Part 81
http://pc5.2ch.net/test/read.cgi/tech/1085806791/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0002デフォルトの名無しさんNGNG
2
0003デフォルトの名無しさんNGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【ライセンスや機能などに問題あり】
Microsoft C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm
0004デフォルトの名無しさんNGNG
#pragma z(>>1)
0005デフォルトの名無しさんNGNG
#pragma Z(>>1)
0006デフォルトの名無しさんNGNG
#pragma marriage(4,5)
00074NGNG
#pragma orz
0008デフォルトの名無しさんNGNG
#pragma AA(_| ̄|○)
0009デフォルトの名無しさんNGNG
たまには関連スレでも貼るか。

宿題: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
環境依存: http://pc5.2ch.net/test/read.cgi/tech/1086373839/
猿: http://pc5.2ch.net/test/read.cgi/tech/1083765346/
GCC: http://pc5.2ch.net/test/read.cgi/tech/1072484422/
0010デフォルトの名無しさんNGNG
#pragma akita
0011デフォルトの名無しさんNGNG
データの初期化について質問します。
例えば以下の例が有るとします。
enum Type
{
  taaa,
  tbbb,
  tccc,
  tlast
};
static char lpType[tUnknown];
void main()
{
  lpType[taaa] = "aaa";
  lpType[tbbb] = "bbb";
  lpType[tccc] = "ccc";
  printf(lpType[tbbb]);
}
これはこれで上手く行ってる訳ですが何となく美しくない。
そこでこれをlpTypeを宣言した時に初期化したいわけですが
何らかの方法って無いでしょうか。
要は
static char lpType[tUnknown] = {
  [taaa] = "aaa",
  [tbbb] = "bbb",
  [tccc] = "ccc",
};
見たいな事が出来ないかなぁと思うわけですが。
0012デフォルトの名無しさんNGNG
あっと一部元ソースのまま残ってました。
正しくは以下です。
>static char lpType[tUnknown];
static char lpType[tlast];
0013デフォルトの名無しさんNGNG
>>11
その上の例でエラーや警告が出ないのか?
0014デフォルトの名無しさんNGNG
> static char lpType[tUnknown];
> lpType[taaa] = "aaa";

警告は処理系依存だが、これで警告を出さないコンパイラは嫌だ。
001514NGNG
s/tUnknown/tlast/
0016デフォルトの名無しさんNGNG
どうもスミマセン、*が抜けてますね。
本当の正しくは
static char* lpType[tlast];
です。
001714NGNG
>>16
static char *lpType[tlast]={"aaa","bbb","ccc"};
0018デフォルトの名無しさんNGNG
import java.applet.*;
import java.awt.*;
import javax.swing.*;
0019デフォルトの名無しさんNGNG
>>16
enum なんか使わずに変けば?
0020デフォルトの名無しさんNGNG
>>17
それだと常に順番は固定じゃないですか。
enum Type
{
  tccc,
  tbbb,
  taaa,
  tlast
};
とかに変えても動くようにしたいわけです。
0021デフォルトの名無しさんNGNG
>>20
どーでもいいけど、C++でいいんじゃね。
0022デフォルトの名無しさんNGNG
>>20
あきらめろ
0023デフォルトの名無しさんNGNG
オレにはついていけないよ・・・レベル高すぎ
0024デフォルトの名無しさんNGNG
>>19
ごめんなさい、意味がわからないです。
>>21
C++だとどうやって書けば良いのですか?
>>22
前に、どこかでこんなような事が出来るみたいな事を見たんですが。
C++だったのかもしれません。
0025デフォルトの名無しさんNGNG
>>24
なので、別のC++スレに逝ってください。
0026デフォルトの名無しさんNGNG
#define taaa "aaa"
#define tbbb "bbb"
#define tccc "ccc"
#define tlast 3
static char *lpType[tlast]={taaa,tbbb,tccc};

これくらいしかないが、#defineを使うのは嫌なんだろうな。
0027デフォルトの名無しさんNGNG
>>20
C99でいけるよ。
0028デフォルトの名無しさんNGNG
>>27
構造体じゃなくて?
0029デフォルトの名無しさんNGNG
>>26
taaaやtbbbに0,1と言った数値も割り振っておきたいので
それだと、ちとまずいです。
>>27
それに付いてもちょっと調べてみます
>>25
ではそちら方で聞きなおしてきます。
有難うございました。
0030デフォルトの名無しさんNGNG
printf(lpType[tbbb]);
ああ、こうしていたか。
0031デフォルトの名無しさんNGNG
std::*mapだかstd::setだか、んなもんだろ。
003228NGNG
http://seclan.dll.jp/c99d/c99d07.htm#dt19991025
これか。
0033デフォルトの名無しさんNGNG
enum Type
{
  tccc = 2,
  tbbb = 1,
  taaa = 0,
  tlast = 3
};
0034デフォルトの名無しさんNGNG
>>32
それはそうなんだけどenumなものってOKなのかな
0035デフォルトの名無しさんNGNG
>>34
gcc3.3.3で-std=c99 -pedanticをつけてコンパイルしても通ったから大丈夫じゃないかな。
0036デフォルトの名無しさんNGNG
>>35
へへぇ。勉強になった。どもです。
0037デフォルトの名無しさんNGNG
const intの場合は案の定だめだ。定数でないと言われる。
0038デフォルトの名無しさんNGNG
>>37
確かにコンパイラのいうとおりだけど、いろいろおもろいですね…。
0039デフォルトの名無しさんNGNG
>>32
そうです、これです!
でも通常のCじゃ無理みたいですね。
gccならオプションの変更でいけるようですが。
VCだとどうすれば使えるようになるんだろう。
0040デフォルトの名無しさんNGNG
>>39
はい、C++スレへGO!
0041デフォルトの名無しさんNGNG
>>39
>でも通常のCじゃ無理みたいですね。
C99は普通のCじゃないのか...
0042デフォルトの名無しさんNGNG
>>41
C99完全準拠の処理系ってある?
0043デフォルトの名無しさんNGNG
見かけない。
0044デフォルトの名無しさんNGNG
http://p44.aaacafe.ne.jp/%7Efeel/
0045デフォルトの名無しさんNGNG
>>11
awkかPerlを使えばできる。
0046デフォルトの名無しさんNGNG
>>42
わたしが去年いたプロジェクトでつくったコンパイラーがそうだ。
(本来はC++コンパイラーなのだが、C99もコンパイルできる)
0047デフォルトの名無しさんNGNG
あまり意味のないレスだな。
0048デフォルトの名無しさんNGNG
>>46
頂戴
0049デフォルトの名無しさんNGNG
プレーン文字列をsha1へ変換するライブラリありませんか?

{sha}xxxxxxxxxxxxxxxx
0050デフォルトの名無しさんNGNG
sha1ってなんだ?
0051デフォルトの名無しさんNGNG
>>50
ハッシュ化アルゴリズム
0052デフォルトの名無しさんNGNG
http://www.google.com/search?num=50&hl=ja&ie=UTF-8&c2coff=1&q=SHA1+%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&lr=lang_ja
0053デフォルトの名無しさんNGNG
あのGCAの開発者が。
0054デフォルトの名無しさんNGNG
コンパイラー
とかくところが素人くささ満点
0055デフォルトの名無しさんNGNG
>>54

プ
0056デフォルトの名無しさんNGNG
>>54
意味がわからない。
005754じゃないんだけどNGNG
コンパイ「ラー」って伸ばすのめったに見とないんだけど
どういうところで使われてんの?

なぜかアセンブラーとかアッセンブラーとかはちょくちょく見るけど
コンパイラーとかリンカーってちょっと違和感がある。
005857NGNG
"めったに見とない"ってなんだ orz
2ちゃんでしか見ないって言いたかったのですよ。
0059デフォルトの名無しさんNGNG
>>57
ダイアとダイヤの違い
タイアとタイヤの違い
ファイアとファイヤーの違い
ファイアとファイアーの違い
ファイヤとファイヤーの違い
(ry
0060(^-^)NGNG
新スレおめでとうございます。
こちらでも、お世話になります。
0061デフォルトの名無しさんNGNG
compiler がコンパイラになろうがコンパイラーになろうが、
同じものを指しているとわかる限りその程度の揺らぎは許容範囲だと思うが。

正確さにこだわるなら原語(ここでは compiler)以外使わない方がいい。
0062デフォルトの名無しさんNGNG
>>61
国内での邦訳にもちゃんと規格があるはずだが・・・
0063デフォルトの名無しさんNGNG
コンピレル
0064デフォルトの名無しさんNGNG
>>59 >>61-62
図形の場合は「ダイア」グラム、
宝石の場合は「ダイヤ」モンド、
と国語審議会による標準が決められていたように思われ。

他の長音、促音なども同様に。
0065デフォルトの名無しさんNGNG
>>64
JISか何かで付けないことにしようと決まってるんだっけ?
確か日本語的には付けないといけませんよだった気がするな。
0066デフォルトの名無しさんNGNG
>>57
ttp://www2u.biglobe.ne.jp/~standard/faq/faq505.htm
0067デフォルトの名無しさんNGNG
JIS的にはインターネットじゃなくてインタネットなんだっけ?
0068デフォルトの名無しさんNGNG
コンソル(実話)
スパユザ(ネタ)
006957NGNG
>>66
なるほど。
要するに 気にすんな ってことか。
0070デフォルトの名無しさんNGNG
全て実話

(プログラムを指して)プラム
(*.basを称して)ベース
レジ
アッセ
ファルス
ワーニング
0071デフォルトの名無しさんNGNG
レジはごく当たり前のように使うぞ。
0072デフォルトの名無しさんNGNG
コアしか口にしてねぇ(ノд`)
0073デフォルトの名無しさんNGNG
ワーニングって何かダメなの?
0074デフォルトの名無しさんNGNG
スターワーズ
0075デフォルトの名無しさんNGNG
確かに発音はc:で、日本語で言えば"をー"に近いけど…
でも、辞書とかでカタカナではワーニングで載ってるし。
0076デフォルトの名無しさんNGNG
warn と warp と warm って母音の発音同じなんだね。
0077デフォルトの名無しさんNGNG
ヽ(`Д´)ノ ウワァァァン
0078デフォルトの名無しさんNGNG
そもそもこんな細かいことにあーだこーだ言う
風潮がおかしいと思う。これは主張したいところのもの
だねえ。
0079デフォルトの名無しさんNGNG
漏れの周りのプロは、仮名表記するときはほとんどワーニング。
ウォーニングとか書くと厨房臭い。

したがって、当然2chの公式表記はウォーニング。
0080デフォルトの名無しさんNGNG
ォワーニングが一番近いな。
0081デフォルトの名無しさんNGNG
ふと気付いて車の取扱書を見たら、「ウォーニングランプ」と書いてあった。
0082デフォルトの名無しさんNGNG
ウォーズマンはカコイイけど
ワーズマンカコワルイ。
0083デフォルトの名無しさんNGNG
警告と言っておけ。
0084デフォルトの名無しさんNGNG
(`・ω・´)ウォォォォォォ・・・
0085デフォルトの名無しさんNGNG
ウォー仁具なんて俺のATOKでは変換できません
0086デフォルトの名無しさんNGNG
    /\___/ヽ   ヽ
   /    ::::::::::::::::\ つ
  . |  ,,-‐‐   ‐‐-、 .:::| わ
  |  、_(o)_,:  _(o)_, :::|ぁぁ
.   |    ::<      .::|あぁ
   \  /( [三] )ヽ ::/ああ
   /`ー‐--‐‐―´\ぁあ

にんぐ
0087デフォルトの名無しさんNGNG
C スレっぽくなくなってきた
0088デフォルトの名無しさんNGNG
> 漏れの周りのプロは、仮名表記するときはほとんどワーニング。

ださ... > 自称ぷろ
0089デフォルトの名無しさんNGNG
会社のイギリス人には、ワーニングで通じます。
ウォーニングって言ったらほわ?って聞き返されました。
0090デフォルトの名無しさんNGNG
そりゃおまえの発音が悪いからだろ。
前者のほうは日本語だとおもわれてるにちがいない。
0091デフォルトの名無しさんNGNG
ローマ字読みでいいんだよ。
発音がおかしいって言われたらブリティッシュだからって言えよ。
0092デフォルトの名無しさんNGNG
mainはマインだな
countはこうんと
whileとdoとreturnはどうする?
0093デフォルトの名無しさんNGNG
「わーにんぐ」と言っても良い。日本では通じる。
でも、カタカナで「ワーニング」とは書かないで。
「デズニーランド」と言ってもいいから、書くときには「ディズニーランド」と書いて。
0094デフォルトの名無しさんNGNG
>>92
うひれ どー れとぅるん
0095デフォルトの名無しさんNGNG
> 「わーにんぐ」と言っても良い。日本では通じる

ということにしたい!

そうしないと私の立場がない!
0096デフォルトの名無しさんNGNG
> 「わーにんぐ」と言っても良い。日本では通じる。
> でも、カタカナで「ワーニング」とは書かないで。

書くときさえちゃんと書けば、言うときは「Star Warz」も「Warming Up」も
「ワー」でいいよね? ;-)
0097デフォルトの名無しさんNGNG
>>96
「わー」だけじゃなく、その前後もちゃんとした発音なら許す。
0098デフォルトの名無しさんNGNG
96 名前:あぼ〜ん [あぼ〜ん] :あぼ〜ん
あぼ〜ん
0099名無しさん@お腹いっぱい。NGNG
下記のソースを$gcc -pg でコンパイルしても
gmon.outが作成されません。なぜでしょうか。

#include <stdio.h>
int main(void)
{
int i;
for (i = 0; i < 2; i++) {
printf("%d\n", i);
}
return 0;
}
0100デフォルトの名無しさんNGNG
>>99
>>9
0101デフォルトの名無しさんNGNG
雑談スレですかここは
0102デフォルトの名無しさんNGNG
雑談しながら質問者が来るのを待つスレです。
0103デフォルトの名無しさんNGNG
ローマ字読みでいいんだよ。
発音がおかしいって言われたらスパニッシュだからって言えよ。
010461NGNG
>>62
他の原語圏で生まれたものを邦訳した時点で発音や表記に揺らぎが生じるのはしかたない。
・それ(発音や表記の揺らぎ)によって他の意味と取り違える可能性が低い場合は許容したら?
・それ(発音や表記の揺らぎ)が嫌なら原語を使えば?
という「個人的な主張」なんだけど。

規格に対して何の疑問も持たず、
それ(規格)を鵜呑みにすることに慣れている人には理解しにくいかも知れない。
0105デフォルトの名無しさんNGNG
確か GPL は原文のみが有効で訳では厳密には駄目らしいね
0106デフォルトの名無しさんNGNG
ォワーニング
イイ!
0107デフォルトの名無しさんNGNG
ヲーニン[グ]
これで決定
0108デフォルトの名無しさんNGNG
>>99
実行しないとね。

>>104
単に規格を知らなくて誤魔化してるだけにしか見えんな。
わざわざ言わなくてもいいのに。

>>105
駄目らしいって…w
0109デフォルトの名無しさんNGNG
> 「わー」だけじゃなく、その前後もちゃんとした発音なら許す。

すたーわーず、わーみんぐあっぷ
0110デフォルトの名無しさんNGNG
> それ(発音や表記の揺らぎ)によって他の意味と取り違える可能性が低い場合は

ワーディングとまぎわらしい
0111デフォルトの名無しさんNGNG
二重配列へのポインタを関数の引数にするにはどうしたら良いのでしょうか?

void f(int *a[2][3]);
void main(){
 int a[2][3] = ...;

  f(&a);
}
ではエラーになります。
0112デフォルトの名無しさんNGNG
void f(int *a[2][]);

変わったことしようとしてるな。
0113デフォルトの名無しさんNGNG
例えば,

void function(void){
int a = 0;
printf( "%d\n", a );
}

とするよね.
このとき,函数 function が呼ばれるたびに,
a のために sizeof(a) byte がメモリに確保されるけど,
この a のためのメモリ領域は函数 function が
終わると開放されるんだっけか?

くやしかったら教えろこのやろ!
0114デフォルトの名無しさんNGNG
別に悔しくはないが、開放ではなく解放される。
0115デフォルトの名無しさんNGNG
>>113
そうなんだが、お前の思ってるイメージとは多分、違う。
アセンブラに落として読んでみな。
0116デフォルトの名無しさんNGNG
函数って書きたいだけちゃうんかと。
0117デフォルトの名無しさんNGNG
>>113
レジスタ渡しならメモリが確保されることは無い。
スタック渡しなら、スタックポインタが上下するだけで、
一般的にメモリの確保は行われない。
その他の場合は知らん。
0118117NGNG
なんか勘違いして書き込んでしまったな。
まぁ、回答としてはおおむね合ってるからいいか。
0119デフォルトの名無しさんNGNG
なんですぐにスターウォーズなんだろう?
なんで誰もワープ航法には触れないのだろう?
0120デフォルトの名無しさんNGNG
ワープはもう日本語だから。
0121デフォルトの名無しさんNGNG
飯野ケジン
0122(^-^)NGNG
>>93
そういうのっておもしろいですね (^-^)
キヤノンって書いてキャノンって読むみたいなの < 違うかも
0123デフォルトの名無しさんNGNG
スパゲッティ? スパゲティ? オレスパゲティ
0124デフォルトの名無しさんNGNG
アフロヘヤー
0125デフォルトの名無しさんNGNG
>>123
スパ(σ・∀・)σゲッツ!!
0126デフォルトの名無しさんNGNG
キヤノンなどは、昔、社名などに「ゃゅょ」等を付けられなかったからという理由なので、全く違う。
0127デフォルトの名無しさんNGNG
テレビでキヤノン社員が見た目の関係とか言ってたような・・・
0128127NGNG
あった

http://web.canon.jp/about/mark/
キヤノンの「ヤ」の字は、何故大きいのでしょうか?

「ヤ」の字が大きく表記された「キヤノン」が生まれたのは、1947年に、社名を「精機光学工業株式会社」から
「キヤノンカメラ株式会社」と変更したときでした。当時の登記簿や株主総会後に発表される営業報告書、
朝日新聞に掲載した広告など、すべて「ヤ」が大きくなっています。
では、なぜ「キャノン」ではなく「キヤノン」にしたかというと、全体の見た目の文字のバランスを考え、
きれいに見えるようにしたからなのです。
「キャノン」では、「ャ」の上に空白が出来てしまい、穴が空いたように感じてしまうので、それを避けたのです。
0129デフォルトの名無しさんNGNG
あった

http://hobby.2ch.net/test/read.cgi/dgoods/1029940946/
0130(^-^)NGNG
>>126
>>127>>128
本当に物知りさん(^-^)
0131デフォルトの名無しさんNGNG
ひでーな、このスレ
>>117に突っ込めねえアフォばっかりかよ
0132デフォルトの名無しさんNGNG
>>131
煽ってないで、突っ込みたいなら、おまえが突っ込めよ。
何、遠慮してるんだよ。
おまえ、いつも自分が言われてるから、誰でもいいから他人にアフォって言ってみたかっただけなんだろ?
0133デフォルトの名無しさんNGNG
>>131
この板で釣りがしたいんならもっと高度なネタを持ってきなさい。
0134131NGNG
(・∀・)ニヤニヤ
0135デフォルトの名無しさんNGNG
ニヤニヤするなら金をくれ!!
0136デフォルトの名無しさんNGNG
恐喝かよ…('A`)つ�I
0137デフォルトの名無しさんNGNG
�I ('A`)マンドクセ
0138デフォルトの名無しさんNGNG
ぬ・る・ぽ♥
0139131NGNG
もっとよこせ
0140デフォルトの名無しさんNGNG
                _∧_∧_∧_∧_∧_∧_∧_∧_
     デケデケ      |                         |
        ドコドコ   < ぬるぽぬるぽぬるぽぬるぽぬ!!! >
   ☆      ドムドム |_  _  _ _ _ _ _ _ _ _|
        ☆   ダダダダ! ∨  ∨ ∨ ∨ ∨ ∨ ∨ ∨ ∨
  ドシャーン!  ヽ         オラオラッ!!    ♪
         =≡= ∧_∧     ☆
      ♪   / 〃(・∀・ #)    / シャンシャン
    ♪   〆  ┌\と\と.ヾ∈≡∋ゞ
         ||  γ ⌒ヽヽコ ノ  ||
         || ΣΣ  .|:::|∪〓  ||   ♪
        ./|\人 _.ノノ _||_. /|\
            ガッガッガッ
         ドチドチ!
0141デフォルトの名無しさんNGNG
―――――――――――――‐┬┘               =≡=
                        |             __  〆
       ____.____    |             ───  \
     |        | ∧_∧ |   | デケドコうっせーよ  ヌルポ!   \._ =二 ∧_∧
     |        |. ( ・∀・)|   |                 _   |ヽ  \ (・∀・# )/
     |        |⌒     て)  人        _  ―――‐ γ ⌒ヽヽ  ⊂   つ  ∈≡∋
     |        |(  ___三ワ <  >  ―――   ―― ―二   |   |:::| 三ノ ノ ノ  ≡ //
     |        | )  )  |   ∨        ̄ ̄ ̄ ―――‐   人 _ノノ (_ノ、_ノ  _//
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    |   
                        |
0142デフォルトの名無しさんNGNG
―――――――――――――‐┬〆
                        |  \
       ____.____    |   \_      ―――    うっせーの外に出すんじゃねーよゴルァ!!
     |        |      |    |     |ヽ   ―――   ―                  ⊂(´Д`#)
     |        |   ∧_∧     γ ⌒ヽヽ  ――――― ―  ̄ ̄__       人  (⌒)⊂/
     |        | ⊂(・∀・ ;) ̄つ  |   |:::|      ―――――   ――――― <  >彡  ,,ノ
     |        |     ⊂ノ__つ人 _ノノ ∈≡∋   ―――――  ――    . ∨
     |        |      |    |          // ――  ――
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    |   .    _// ―
                        |        /'|
0143デフォルトの名無しさんNGNG
Cスレは低脳が多いな
低脳が記憶できる限界の言語だからか・・・
0144超初心者 多次元配列勉強中NGNG
すみません。質問させて下さい。本に書かれていた演習問題の意味が分かりません(解答なし)。

問題、x[2][3]とy[3][2]の積を求めるプログラムを書け

これって総当りで全ての積を求めろって事なんでしょうか?
それと解を代入しておく変数はどういう形式にすればよいのでしょう?
a[2][3] or  a[3][2]???

書いている事がちょっと分かりづらいかもしれませんが、アドバイスいただけたら嬉しいです。

本 定本明解C言語 入門編
0145デフォルトの名無しさんNGNG
>>144
行列か?
0146デフォルトの名無しさんNGNG
>>144
想像するに行列の積ではないかと思うんだが・・
問題文はホントにそれだけか?前に解説とかあるんちゃうか?

ググったら、こんなん出た。
http://www.bohyoh.com/Books/ReikaiA01/index.html
0147145NGNG
なわけないか。
xとyの配列がどこかで定義されていないの?
されていれば単にx[2][3]とy[3][2]をかければいいんだけど。
0148144NGNG
レスどうもです。
すみませんm(__)m問題文説明不足でした。

恥ずかしいけど行列の積です。
x={1,2,3,4,5,6} y={1,5,5,3,8,1}

単にかけるってのはどういうことなんでしょう?
xのどことyのどこを掛けるのかが分からないんです。
馬鹿みたいな質問と思われるかもしれませんが・・・・。

>>146
解答が本当の意味で別冊って(T_T)
買うべきなんだろうか…。
0149デフォルトの名無しさんNGNG
っていうか「行列の積」ぐらい中学生で習うだろうが。
0150デフォルトの名無しさんNGNG
ぶるじょあな中学生ですね
0151デフォルトの名無しさんNGNG
>>149を晒しage
0152デフォルトの名無しさんNGNG
>>148
プログラムが判らないのではなく、行列の積が判らないのなら板違い。

もしリアル中学生なら少し難しいかも知れんが、
ttp://homepage3.nifty.com/law_of_causality/math/mx13.htm
ttp://www007.upp.so-net.ne.jp/masema/matrix.html
このあたり。読んで判らなければ数学板へ逝け

/* おまけ */
 int i,j,k;
 int x[2][3]={1,2,3,4,5,6}, y[3][2]={1,5,5,3,8,1}, ans[2][2];

 for (i=0; i<2; i++)
  for (j=0; j<2; j++) {
   ans[i][j]=0;
   for (k=0; k<3; k++)
    ans[i][j] += x[i][k] * y[k][j];
  }
0153144NGNG
>>152
丁寧な解説まで入れて下さりありがとうございます♪
忘れていた記憶もよみがえり、しっかり理解出来ました!!本当に感謝。
また、スレ違いとも考えず失礼しました。

こんなことならもっと数学勉強しとけば良かったです。学生の頃は数学の使い道
なんて思い当たらなかったのに・・・・(パソコンもあんま普及してなかった)。
ちなみに中学生じゃありません。26、一応社会人(今日は代休)。
プログラミングの勉強を始めてまだ1週間・・・早くも挫折するとこだった。

ってかこの歳になって始めるのはやっぱ無謀なんでしょうかね?
書いてある事を理解するのもだんだんと遅くなってきてる・・・。
0154デフォルトの名無しさんNGNG
書いてあることが理解できないのは君のやる気がねーだけだろw
自分で挫折しそう、なんていってる時点でもうだめ。辞めなさい、会社もw
0155デフォルトの名無しさんNGNG
歳など関係ない。
お前が無能なだけ。
0156デフォルトの名無しさんNGNG
>>153
早く結婚して子供作れ
少子化を防ぐことがお前にできる唯一の貢献
0157デフォルトの名無しさんNGNG
バカな親のもとに生まれる子供は不幸だぞ。
0158デフォルトの名無しさんNGNG
>>157
いや、むしろ親がそこそこエリートだったり、商売で成功しているほうが、子供に悲劇が待っている。
親は馬鹿でも貧乏でも、子供は清く育つもんだ。
おまえも、はやく結婚して子供作れ。
0159デフォルトの名無しさんNGNG
そして我に年金を!
0160デフォルトの名無しさんNGNG
Cというか、数学的問題だと思うのですが・・・

上限値 U 、下限値 L 、サンプリング N からなる sin波 の値を求めたいのですが、
うまくできません。

short i;
float radius = 0.0
for( i=0; i<100; i++ ){
radius += 0.1;
sin_value = sin( radius );
printf( "%f\n", sin_value );
}
上記だと -1〜1の範囲になってしまいます。解決方法を教えてください。
0161デフォルトの名無しさんNGNG
>上限値 U 、下限値 L 、サンプリング N
と
>-1〜1の範囲
と
もまえのプルグルム
のそれぞれ何に対応してるのか知らしめろ
0162デフォルトの名無しさんNGNG
どうみてもUとLが考慮されてないからそれでいいんじゃね?
0163デフォルトの名無しさんNGNG
>>162
すみません、、そのUとLの考慮の仕方を教えて頂けますか?
0164デフォルトの名無しさんNGNG
>>160
radius += 0.1;
sin_value = sin( radius );

これは

sin_value=sin(0.1*i);

にした方がよい。
0165デフォルトの名無しさんNGNG
>>163
それって、sin波との関係もくそもないだろ?
5から100 までの乱数を得たいという場合を
考えれば、自ずとわかるんじゃね?
0166デフォルトの名無しさんNGNG
>>163
sin() の結果が -1〜+1 で、それを振幅 (U-L) にするんだから
  sin_value = (sin(i*0.1) + 1) / 2 * (U - L) + L;
でいいんじゃね?
i*0.1に N が考慮されてないのは良いのか?って問題は残るが。

で、サンプリングて何さ?一周期をN分割しろって話?
0167デフォルトの名無しさんNGNG
あーあ、書いちゃったよ。
0168デフォルトの名無しさんNGNG
platformはVisualC++です
構造体をコピーする関数はありますか?
Linuxでは bcopy(servhost->h_addr, (char *)&server.sin_addr, servhost->h_length);
上記で問題ないですが win なので bcopy に変わる関数が欲しいです
0169131NGNG
>>168
代入できるよ?
0170デフォルトの名無しさんNGNG
くっそー
またコテっちまった
俺ヴァカ
0171デフォルトの名無しさんNGNG
すいません、VBからCに入ってまだ1ヶ月の初心者です。。
VBではオーバーフローするとエラーが出ていたんですが、
うちのCではエラーが出ません。。
Cでは一般的にオーバーフローでエラーは出ないものなのでしょうか・・・
友達に課題(?)を出されて頑張っているのですが、
もしも自分の持っているコンパイラだけ特殊だったら・・と冷や冷やしています。
初歩的な質問で申し訳ありませんが、どうかお願いしますm(_ _)m
0172デフォルトの名無しさんNGNG
>>171
標準では出ないよ。
オーバーフローしてバッファが壊れたかどうかを検出したりするツールもあるにはある。
フリーで低機能なものと商用でバカ高いものが。
0173デフォルトの名無しさんNGNG
Cではオーバーフローエラーはでないのが普通。

unsined char x; x = 255; x+=1;

0174デフォルトの名無しさんNGNG
>>171

>標準では出ないよ。
>でないのが普通。

どちらも間違い。
標準ではundefined behavior(未定義の動作)であり、
エラーが出る保証どころか地球が爆発しない保証すらないのが「仕様です」。

ちなみに、符号付整数はオーバーフローしたら未定義の動作、
符号なし整数にはオーバーフローの概念自体が存在しない。
0175デフォルトの名無しさんNGNG
>>174
で、「標準では(エラーは)出ないのが普通」のどこが間違ってるの?
0176デフォルトの名無しさんNGNG
>エラーが出る保証どころか地球が爆発しない保証すらない
0177デフォルトの名無しさんNGNG
>176 は >175 宛だ
0178デフォルトの名無しさんNGNG
>>175
ニホンゴワカリマスカ?

エラーが出る保証も出ない保証もないのが「標準」。
「未定義」については、それがどういう意味かをきちんと理解することが肝心。
0179デフォルトの名無しさんNGNG
要するにエラーは出ないんでしょ?
0180デフォルトの名無しさんNGNG
>>179
ニホンゴワカリマスカ?
0181デフォルトの名無しさんNGNG
いるんだよな、174みたいなキチガイ。
0182デフォルトの名無しさんNGNG
>>181
キチガイはお前と規格に書いてある
0183デフォルトの名無しさんNGNG
CとC++とVCの違いを簡単に教えて下さい
0184デフォルトの名無しさんNGNG
も〜っとC
0185デフォルトの名無しさんNGNG
C#
0186デフォルトの名無しさんNGNG
定義なんかとりあえず横に置いといていーんだよ。
>>171が釣りでなく本当の初心者なら、
Cは実行効率を求めているのでそういう実装に
なってないってだけ答えとけばいい。
0187デフォルトの名無しさんNGNG
>>186
必死だなw
0188デフォルトの名無しさんNGNG
7分か
0189デフォルトの名無しさんNGNG
警告が出ることはあっても、エラーにはならないな。
0190171ですNGNG
すいません、本当に初心者でした・・・。。
ちょっとややこしいことになってしまいましてm(_ _)m
どうもご回答有難うございました
0191デフォルトの名無しさんNGNG
>>190
初心者が「ベテラン」に気を使うハメに・・・
逆だよな、逆w
0192デフォルトの名無しさんNGNG
C言語でサウンドカードのマスターボリュームを設定するとしたら
どの辺をつかったらいいですか?関数とか。
0193デフォルトの名無しさんNGNG
int set_master_volume(int v);
0194デフォルトの名無しさんNGNG
C言語で、CSVのテキストファイルを読んで集計する、awkみたいなツールを作ろうとしてるんですけど、
ファイルの読み書きのサンプルはありますが、CSVをフィールドに分けるようなサンプルが全く見あたら
ないのは気のせいですか?
0195デフォルトの名無しさんNGNG
>>193
どうもありがとうございます。
あとネット探したらサンプル+解説を見つけました。
MixerOpen()関数とかを使うみたいです。ありがとうございました。。
0196デフォルトの名無しさんNGNG
>>194perlとか使った方が楽だし
0197デフォルトの名無しさんNGNG
>>194
悪名高いstrtokでいいじゃん
0198デフォルトの名無しさんNGNG
>>174
おい、これ忘れてるぞ
         ↓
                 ┌─┐
                 |も.|
                 |う |
                 │来│
                 │ね│
                 │え .|
                 │よ .|
      バカ    ゴルァ  │ !!.│
                 └─┤    プンプン
    ヽ(`Д´)ノ ヽ(`Д´)ノ  (`Д´)ノ    ( `Д)
    | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U
〜 〜  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎−>┘◎


0199デフォルトの名無しさんNGNG
あるプログラムで**ptrていうのは見かけましたが、*二つってどういう意味ですか?
0200デフォルトの名無しさんNGNG
>>199
ポインタのポインタ。
0201デフォルトの名無しさんNGNG
>>199
ポインタのポインタ。
それで分からなかったら、これ嫁。
http://pc5.2ch.net/test/read.cgi/tech/1084956293/
0202デフォルトの名無しさんNGNG
>>172 の「標準」は「一般的には / 普通は」と言う意味で、
>>174 の「標準」は「C言語の規格で定めた」と言う意味、
だと思った。
0203デフォルトの名無しさんNGNG
よっぽど悔しかったんだなw
0204デフォルトの名無しさんNGNG
int rx=5;
と定義して「&rx」と書くとrxが存在するメモリ上のアドレスを示すんですよね?
これをアドレスの直接指定って言うんですよね?

int *prx=5;
と定義して「prx」 と書くとprxが存在するメモリ上のアドレスではなく、prxが指しているアドレス(5が存在するアドレス)を
示すんですよね?
「**prx」と書くとprxが存在するメモリ上のアドレスを示す(ポインタのアドレス)んですよね?

間違っていたらご指摘ヨロ
0205204NGNG
ごめんなさい。一行抜けてました。正しくは以下です。

int *prx=5;
と定義して「prx」 と書くとprxが存在するメモリ上のアドレスではなく、prxが指しているアドレス(5が存在するアドレス)を
示すんですよね?
この変数のことをアドレスの間接指定、つまりポインタと言うのですよね?
「**prx」と書くとprxが存在するメモリ上のアドレスを示す(ポインタのアドレス)んですよね?
0206デフォルトの名無しさんNGNG
>>205
宣言の時の*と、間接演算子の*は微妙に違う。
宣言時の*は、その変数がポインタである事を表し、
間接演算子*はそのポインタの先にあるものを表す。

rxのくだりは合ってと思うよ。
**prxはちょっと違うな。
普段はポインタのポインタなんて、可変長の多次元配列使うときしかやらないけど、
それなら他のデータ構造の方が効率がいいと思うし。
0207デフォルトの名無しさんNGNG
>>204
> これをアドレスの直接指定って言うんですよね?

言わない。

> 5が存在するアドレス

違う。いわばそれこそがアドレスの直接指定(5はint *にキャストすべき)。

> 「**prx」と書くとprxが存在するメモリ上のアドレスを示す(ポインタのアドレス)んですよね?

全然違う。
0208204NGNG
すみませんでした勉強しなおしてきますorz
0209デフォルトの名無しさんNGNG
>>204
アセンブラのimmediate addressやindirect addressと
ごっちゃになってるみたいだな。
0210デフォルトの名無しさんNGNG
>>208
スレ違いになるかもだが、C言語ポインタ完全制覇って本読んでみることをお勧めする。
オレはその本読んで分かった。
0211デフォルトの名無しさんNGNG
例えば,ファイル名 hoge.bin の
ファイルサイズのみが欲しい場合,
以下のような方法より速い,もしくは簡単な方法ってある?

char c;
unsigned long i, filesize;
FILE* pfile;
pfile = fopen( "hoge.bin", "r" );
for( i = 0 ; c = fgetc(pfile) != -1; i++);
fclose(pfile);
filesize = i;
0212デフォルトの名無しさんNGNG
>>211
pfile = fopen( "hoge.bin", "rb" );
fseek(pfile,0,SEEK_END);
filesize=ftell(pfile);
0213デフォルトの名無しさんNGNG
仮引数における配列の宣言について

void func(int a[])

仮引数の宣言では、配列の要素数は書いても、書かなくてもいいんですよね。ではどうして
多次元配列では以下のように最外周でない配列には要素数を書かなければならないんですか?

void func(int a[][100])
:
0214デフォルトの名無しさんNGNG
> ではどうして
が意味不明。

> void func(int a[])

これだって「省けるのは最外周」だけだろ?
0215デフォルトの名無しさんNGNG
unisgned int同士の減算って、intに格上げされますか?
unsigned int a, b;で、たとえばそれが16bitだったとき、
bが40000で、aが1だったら、
a - b はいくつになるでしょう?
たとえば long int c; でそれが32bitだったら、
c = a - b;でcには何がはいるのが正しいですか?
0216デフォルトの名無しさんNGNG
>>213
要素ひとつ分の大きさが分からないと駄目だから。

>>215
unsigned intからintに格上げ!?
0217デフォルトの名無しさんNGNG
>>213
コンパイラの気持ちになって考えてみよう
0218デフォルトの名無しさんNGNG
> unsigned intからintに格上げ!?

どっちが格上ですか?
0219デフォルトの名無しさんNGNG
>>213
ttp://www.kouno.jp/home/c_faq/c6.html#0
ここを死ぬほど嫁。
0220202NGNG
>>203
俺は174じゃないよ。
そう解釈すればどっちも意味は通るなと思っただけ。

一語一義にこだわる理由がわからない。
0221デフォルトの名無しさんNGNG
一語一義なら考えなくても(知識だけで)いいから。
自分の辞書に載ってない意味は間違いということにしてしまった方が楽だから。
0222デフォルトの名無しさんNGNG
>>211
sys/stat.h が使えるならstat使ったほうがいいんじゃないの?
0223デフォルトの名無しさんNGNG
>>220
174==203 だから、相手にしないほうがイイYo
0224デフォルトの名無しさんNGNG
>>206
>宣言時の*は、その変数がポインタであることを表し

漏れとは捉え方が違うな。
漏れは「int *p;」なら、
'p'がポインタ、という解釈ではなく、
'*p'がint型、という読み方をするよ。
藻前さんは「int* p;」って書く派なのかな?

#だから漏れはfunctionポインタがキモくて仕方ない。
0225デフォルトの名無しさんNGNG
けど、初心者にとっては>>206の説明のほうがわかりやすいと思う。
「int型の *p」 というのと、「int型ポインターの p」というのでは後者
のほうが理解しやすいんじゃないかい?
0226デフォルトの名無しさんNGNG
構造体のポインタのポインタがワカラナイ・・・
struct hoge **data
0227デフォルトの名無しさんNGNG
構造体へのポインタへのポインタ
0228デフォルトの名無しさんNGNG
>>226
自分でちゃんと書いておきながらなにがわからないん?
それを晒さないと、>>227 のような回答しかないぞ。
0229デフォルトの名無しさんNGNG
ポインタ周りわかんなかったらメモリダンプで参照デリってけば楽勝
0230デフォルトの名無しさんNGNG
>>229
やり方キボンヌ
0231デフォルトの名無しさんNGNG
(*(data++))->構造体のメンバ;
0232デフォルトの名無しさんNGNG
もっとレベルの低い質問受けてくれるスレありませんかね
0233デフォルトの名無しさんNGNG
スレ違いでなければこのスレでどーぞ。
0234232NGNG
returnしたい値が2つ以上ある場合どういう手順を踏めばいいでしょうか?
0235デフォルトの名無しさんNGNG
>>220
弁解は逆効果・・・
おまえ面白いなw
0236デフォルトの名無しさんNGNG
>>234
ポインタ引数とか構造体で返すとかグローバル変数とか
推奨する/しないは別として
0237デフォルトの名無しさんNGNG
>>234
構造体で返す。
ポインターを渡して、その中に返す。
お好きな方をどうぞ。
0238デフォルトの名無しさんNGNG
ポインタのポインタの使い方といえば、ポインタ自体の値を関数で書き換えたいときか、
2次元配列もどきを作るとか構造体のポインタを配列にしたとき位だな。
0239デフォルトの名無しさんNGNG
C言語で可変長の文字列配列を使う方法を教えて下さい。
0240232NGNG
>>236-237
ポインタ引数で返すのは
hoge(&i,&j);
みたいな感じでアドレスを渡せばいいんだと思うのですが
構造体の場合は構造体へのポインタを渡すということでしょうか?
0241デフォルトの名無しさんNGNG
>>240
いや、構造体をそのまま返す。
0242デフォルトの名無しさんNGNG
>>239
char *p = (char*)malloc(7743);
サイズ変えたい場合はrealloc。
これ以上のサポートは期待するな。
0243デフォルトの名無しさんNGNG
>>240
・ポインタ渡し
・配列渡し(前項に含まれる)
・値返し
・外部変数

やりようはいろいろ
繰り返すが推奨する/しない以前の問題な
0244デフォルトの名無しさんNGNG
複数のフラグをまとめる場合、みなさんはどういう方法をとりますか?

enum{ a = 1;
b = 2;
c = 4;
};

int flags;
flags |= a;

とかやりますか?それともビットフィールドを使いますか?
好みの問題ですかね。
0245デフォルトの名無しさんNGNG
>>244
ビット単位の演算
「複数のフラグ」が16個とか32個とかに限定されるのがイヤだけどね

フラグで条件分岐しようかって場面でもうちっとよく考える
0246244NGNG
そうれすか。
移植性とか考えた場合はビットフィールドなんですかね。
まぁいまどきint型ならだいたい4バイトなんでしょうけど。
あと、複数のフラグの中に、状態が4パターン必要で2ビットを
使うものがまざってたりすると・・・この4パターンのどのパターン
が立っているかを判別する場合、ビット単位演算だと右シフトして
マスクしてっていう必要がでてくるのかな?
0247デフォルトの名無しさんNGNG
>>246
switch((flags & 6) >> 1) { case 0: case 1: case 2: case 3: ; } ってか?
switch(flags & 6) { case 0: case 2: case 4: case 6: ; } と一緒だろうがよw
0248デフォルトの名無しさんNGNG
ビットフィールドの格納順序って処理系依存じゃなかったっけ?
0249244NGNG
ですよね(w。
0250244NGNG
>>248
そうなんすか・・・。でも名前つけるし、普通に使う分には
意識する必要ってあるんですかね。
0251デフォルトの名無しさんNGNG
>>250
あんたの方が正しい
処理系依存と処理系定義を混同すると間違えるんだよ
0252デフォルトの名無しさんNGNG
>>246
途中に複数ビットを扱うパターンがあるならビットフィールドの方が楽だね。
どっちみち、LSBから配置されるかMSBから配置されるか、エンディアンの問題含めて
可搬性は乏しいけど私はビット演算を一々コーディングするよりいいと思う。
0253デフォルトの名無しさんNGNG
内部で完結することが確実な場合にはいいんだけど、
外部とやり取りする可能性がある場合にはenumなり
#defineなりを使ったほうが無難。
0254244NGNG
なるほろ。
今やってるのが、膨大な件数のデータがあって、それをファイルに
書き出したりするんで、とにかくデータサイズを縮小したいがために
ON・OFFフラグや4パターンフラグや1〜18の数値をとるものやら
いろんなものをint型などに収めようとしてたもんで、論理演算だと
数値とりだしたりするのに、シフトとかしたりして四苦八苦して
たのですが、素直にビットフィールド使えばいい気がしてきました。

アドバイスどうも!
0255デフォルトの名無しさんNGNG
処理系定義と、処理系依存の違いについてまとまってるページある?
ぐぐってもいまいちヒットしなかったんで。
0256デフォルトの名無しさんNGNG
>>244
まともなコンパイラなら、ビットフィールド使っても自分でビット演算しても
最適化で実質同じコードを吐いてくるしね。
#寧ろマスクミスや符号拡張のミスがない分人間より賢かったりして。
0257デフォルトの名無しさんNGNG
>>256による定義の推定
まともでないコンパイラ: 自分のヘボをフォローしてくれない処理系

あっれー? なんでこんなにデカいんだろー おそいしー バグ再現しないしー
ぽくちんわかんなーい ねーねー外注にしよーよー
0258デフォルトの名無しさんNGNG
外注なら日本語おかしくても最適化してくれるんだろw
0259デフォルトの名無しさんNGNG
>>242
ありがとうございました。
やりたいことはできました。
0260デフォルトの名無しさんNGNG
なんだ? ビットフィールドを使いこなせない恨みを撒き散らしているage厨が涌いてるなぁ。
0261デフォルトの名無しさんNGNG
> ON・OFFフラグや4パターンフラグや1〜18の数値をとるものやら
> いろんなものをint型などに収めようとしてたもんで、論理演算だと
> 数値とりだしたりするのに、シフトとかしたりして四苦八苦して
> たのですが、素直にビットフィールド使えばいい気がしてきました。

この部分だけ読めばまさにその通りだが、その前の

> 膨大な件数のデータがあって、それをファイルに
> 書き出したりするんで、とにかくデータサイズを縮小したいがために

ここ読んで、「あ、こいつハマるな」という予感が ;)
べつにビットフィールドにかぎらず、構造体をファイルに書いたり読んだりすれば
格納内のメンバーの格納のしかたが処理系依存だいう点でめんどうになる。
もちろん構造体じゃなくても、intをファイルにバイナリーで書いたらそのバイト順から
して処理系依存ではあるが、
ふつうの数値<<構造体<<bitフィールドの順にだんだん「処理系の差ではまる」のに気づく
確率が高い。まあ、逆に言えば差異をつい気にしないで書いちゃったのに早めに気づくので
よいとも言えるが。
0262デフォルトの名無しさんNGNG
わたしは、メモリー内だけはふつうにbitフィールドで使いまわし、
ファイルとの読み書きの部分だけ、シフトしたりこねくりまわしてる。
そうすれば、気をつける箇所が読む/書くの2関数だけになるので、かなり楽。
0263デフォルトの名無しさんNGNG
例えば,

unsigned char c = 100;
unsigned long i;
i = (unsigned long) c;

としても i の値は 100 にならず,変な値になるよね.
i が 100 になるようにするにはどんなキャストすればいいの?
0264デフォルトの名無しさんNGNG
i は 100になると思うが。。。
0265263NGNG
>>264

うんたしかにそうだった.
で,

unsigned char c = 100;
unsigned long* p;
p = (unsigned long*) &c;

このとき,*p が 100 になることを期待したいんだが,
ならない.
なんでか,おしえて
0266デフォルトの名無しさんNGNG
なるわけないだろ。
0267デフォルトの名無しさんNGNG
>>265
キミはこのあたりのスレで滝に打たれてきなさい。

http://pc5.2ch.net/test/read.cgi/tech/1084956293/
0268デフォルトの名無しさんNGNG
swap(s)
char **s;
{
printf("\t%s\n",*s);
*s[1] = 'e';
printf("\t%s\n",*s);
}
main()
{
char *s = "tako";
printf("\t%s\n",s);
swap(&s);
printf("\t%s\n",s);

}

参照渡しでswap()内で文字列を書き換える
上記のようなプログラムを組んだのですが
うまく動きません。
どうすればよいですか?
0269デフォルトの名無しさんNGNG
>>268
書き換えちゃだめ
0270デフォルトの名無しさんNGNG
(*s)[1] = 'e'
   ・
   ・
char buff[16],*p;
p = strcpy(buff, "tako");
0271デフォルトの名無しさんNGNG
>>265
&cの次のアドレス(&c + 1)に何が入っているのか
そして、ビッグエンディアンなのかリトルエンディアンなのか、
わかったら答えられる。
0272271NGNG
ちょっと違った
longなので &c + 1,&c + 2,&c + 3のアドレスの内容
0273デフォルトの名無しさんNGNG
>>268
もうひとつ。
>*s[1] = 'e';
(*s)[1] ではないかと。
0274273NGNG
あっ、ガイシュツだー!
逝ってきまーす♪
0275デフォルトの名無しさんNGNG
>>265
unsigned char c;
こうすると c はアドレス &c から sizeof(unsigned char) のオブジェクトを指し、
そのオブジェクトは unsigned char として解釈されるという意味。

unsigned long *p = (unsigned long *)&c;
こうすると *p はアドレス &c から sizeof(unsigned long) のオブジェクトを指し、
そのオブジェクトは unsigned long として解釈されるという意味。

つまりキャストを経たことで解釈対象のオブジェクトの大きさが変化している。
アドレス p + sizeof(unsiged char) からアドレス p + sizeof(unsigned long) の直前までは何が入っているかわからない。

ここで言うオブジェクトはメモリブロックと読み変えてもいい。
0276デフォルトの名無しさんNGNG
「質問」
ユーザに文字列の入力を求めます。
その場合、入力される文字列の長さは不定ですよね。
このとき、入力された文字列の長さに合わせて変数を確保することは可能ですか?
0277デフォルトの名無しさんNGNG
>>276
mallocである程度大きくとっておいて、入力途中で足りなくなったらreallocで増やす。
0278デフォルトの名無しさんNGNG
>>277
早速レスありがとうございます!
いまから試行します。
0279デフォルトの名無しさんNGNG
>>254
switch((flags & 6) >> 1) { case 0: case 1: case 2: case 3: ; } ってか?
switch(flags & 6) { case 0: case 2: case 4: case 6: ; } と一緒だろうがよw

ビットフィールドは前者な
アセンブラ読めねえ奴が言う最適化は100%例外なくハッタリ
たまたま当たってもあくまで偶然、そいつに管理能力があるわけじゃない
0280デフォルトの名無しさんNGNG
初歩的ですが、構造体単位のファイルへの読み書きですが、
処理系が一緒なら同じ構成の構造体は、パディングの位置も
一致しているのですよね?あとビットフィールドも。
0281デフォルトの名無しさんNGNG
コンパイル時のフラグによって変わる処理系があったような気もしないではないが、
基本的には一緒。
0282デフォルトの名無しさんNGNG
教えてください。。。
socket通信をするプログラムA.exe(データをsocketで受け取り、
処理をして指定のファイルを作る)を作って、これをWINXP上で
「サービスとアプリケーション」に追加させ、PCを起動するたびに
裏で起動させようとしたのですが、なぜか起動しないのです。
A.exeを単体で起動すると動くのですが、サービスとして
起動させると立ち上がらないのです。
(色々調べたのですが、解決法が載ってなくて・・・)

なんか原因がわかる方がいましたら、教えてください。
ちなみにA.exeは、コンソールアプリのC++.NETでOSはXPです。
0283デフォルトの名無しさんNGNG
おたずねします.
---------------------------
int myinit(int N, AI[])
{
int i;
srand(time(NULL));
for (i=0;1<N; i++){
AI[i]=rand() %N;
}
--------------------------
という,AI[i]にN個の値をぶち込むという関数なのですが,
コンパイルすると,最初の行について「)が必要」とコンパイルエラーに
なってしまいます.ちゃんと)入っているし,何度も消して打ち
直したりしたのですが,毎回怒られます.何が問題なんでしょうか.
分かる方おられましたらどうぞよろしく.
0284デフォルトの名無しさんNGNG
myinit(int N, int AI[])
0285デフォルトの名無しさんNGNG
>>281
そうですか、レスどうもです。
0286283NGNG
>>284
だめぽですた(;´д`)
0287デフォルトの名無しさんNGNG
int myinit(int N, AI[])

この行以前をよく見てみ。
0288283NGNG
>>287
#includeの行しかありませんが…
0289デフォルトの名無しさんNGNG
>>286
キミは向いていないから、
もうやめたほうがいいよ。
その方が将来的には幸福だよ。
キミ自身も、周りの人間もね。

0290デフォルトの名無しさんNGNG
閉じてねぇじゃねーかボケなす
0291デフォルトの名無しさんNGNG
#define N (
0292283NGNG
>>289
宿題なのでやめるわけにもいかず困ってるんです
0293デフォルトの名無しさんNGNG
インデントがないから気持ち悪いよね。
おかげで}がなくても気づきにくくなってる。
0294デフォルトの名無しさんNGNG
>>292
自分で書いたソースとエラーメッセージを全部そのまま
コピペすべし。
0295283NGNG
>>293
インデント入ってたはずなんだけど…もう一回書いてみます.
最後の}は単にコピペのし損ないです.失礼しました
-----------------------
int myinit(int N,int AI[])
{
int i;
srand(time(NULL));
for (i=0;1<N; i++){
AI[i]=rand() %N;
}
}
---------------------
0296デフォルトの名無しさんNGNG
#undef AI
0297デフォルトの名無しさんNGNG
>>295
  連続した半角スペースは削除されるので、
  全角スペースにちかんしないといけない。
0298デフォルトの名無しさんNGNG
>>297
元気か山本君
0299デフォルトの名無しさんNGNG
値返せよ
0300デフォルトの名無しさんNGNG
>>297
    &nbsp;の文字参照を使う方法もある
0301デフォルトの名無しさんNGNG
>for (i=0;1<N; i++){
"1<N"ってお前……
0302デフォルトの名無しさんNGNG
つーか283は
ぼるじょあがC/C++の宿題を片づけますYO! 24代目
ttp://pc5.2ch.net/test/read.cgi/tech/1086612317/
に行った方が良くないか?
0303デフォルトの名無しさんNGNG
>>292
学校をやめればいいじゃないか。
0304デフォルトの名無しさんNGNG
例えば文字配列char buf[256]; を用意します。
標準入力から入力したファイル名を入力してその名前をbufに格納したいです。
(その後に出てくる関数に、引数としてファイル名を渡したいので)

fgets(buf, sizeof(buf), stdin);
だと上手くいかないのですが
scanf("%s", &buf);
だと上手くいきます。

fgetsではうまくいかない理由と、scanfを使わずに上の動作を行いたいときはどうすれば良いか
教えて下さい。
0305デフォルトの名無しさんNGNG
fgets():最後の改行ごとバッファに入ってしまうため、ぢゃないかな?
0306デフォルトの名無しさんNGNG
まずはどのようにうまくいかないのか

ここからだ
0307デフォルトの名無しさんNGNG
そりゃあまぁ、>>305の通りになって、ファイルが見つからないだろうさ。
0308デフォルトの名無しさんNGNG
char buf[256], *p;
if(NULL != (p = strchr(fgets(buf, sizeof(buf), stdin), '\n'))) *p = '\0';
0309デフォルトの名無しさんNGNG
>>308
きもい
0310デフォルトの名無しさんNGNG
c初心者です。質問します。


/* 二つのポインタを交換 */
#include <stdio.h>

main(){
int a=1,b=2,*s1,*s2,**x=&s1,**y=&s2,*tmp;
s1=&a;
s2=&b;


printf("*s1=%d\n",*s1);
printf("*s2=%d\n",*s2);

tmp=*x;
*x=*y;
*y=tmp;

puts("ポインタs1とs2を交換しました。");

printf("*s1=%d\n",*s1);
printf("*s2=%d\n",*s2);

}

**x=&s1がいまひとつわかりません。
どなたか、絵で説明してくれませんか。
0311デフォルトの名無しさんNGNG
>>310
絵で説明してほしかったらこっちにゆけ
http://pc5.2ch.net/test/read.cgi/tech/1083765346/
0312デフォルトの名無しさんNGNG
>>311
絵書けないから考え方のヒント。

int a=1;
int *b=&a;
と書いたら、
*b=&a;
じゃなくて
b=&a;
という解釈になる。

**x=&s1;
なんて代入はやってない
あえて書くなら
int** x;
x=&s1;
0313デフォルトの名無しさんNGNG
>>312
> int a=1,b=2,*s1,*s2,  **x=&s1  ,**y=&s2,*tmp;
0314!312NGNG
>>313晒しage
0315デフォルトの名無しさんNGNG
int a=1,b=2,*s1,*s2,  **x=&s1  ,**y=&s2,*tmp;
            ~~~     ~~~
0316313NGNG
>>312が「なんて代入はやってない」というからやっているところを示しただけだが。
ちなみに代入じゃなくて初期化だが、>>310は代入とは一言も言っていない。
0317デフォルトの名無しさんNGNG
もしかして俺、ネタにマジレスしてるのか?

int *x, **y=b, z=3;
と書くのは
int *x;
int **y;
int z;
y=b;
z=3;
と書くのと一緒だ。
何でと言われても困る。偉い人がそうすると決めた。
あと、int* x;と int *x;と int * x;は全部同じ意味。

さっきの例は、遠回しに
int a=1,*s1,**x;
s1=&a;
x=&s1;
と書いてるのと同じ。
0318デフォルトの名無しさんNGNG
>>316
バカ?言っていることが矛盾してますが
0319デフォルトの名無しさんNGNG
>>317=>>311か?
そんなレスをする意図がまったくもって不明なんだが。
ついでにいうと、やっているのにやっていないとレスするところも。
0320デフォルトの名無しさんNGNG
>>319=>>312
その程度のことでムキになってると(ry
0321319NGNG
>>317=>>311
↑これは間違い。>>319=>>312だ。
0322321NGNG
うわ・・・さらに間違えたし。
>>317=>>312だ。
つーかもういいや。
0323デフォルトの名無しさんNGNG
>>312は>>310をきちんと読んでいないだけだろう。
0324C初心者NGNG
すいません。
putcharって何なんですか?
まだ習ってないんです。
0325デフォルトの名無しさんNGNG
Google 検索: putchar
http://www.google.com/search?hl=ja&lr=lang_ja&ie=sjis&q=putchar
0326デフォルトの名無しさんNGNG
#define putchar(c) putc(c, stdout)


0327デフォルトの名無しさんNGNG
**x=&s1;
なんて代入はやってない
0328デフォルトの名無しさんNGNG
やっていないのあとに「が」を忘れているからおかしい文章になっているのでは・・・
0329デフォルトの名無しさんNGNG
>>328
放置汁
0330デフォルトの名無しさんNGNG
>>310
> **x=&s1がいまひとつわかりません。
ポインタへのポインタ **x がポインタ *s1 のアドレスを参照しているだけでは?
0331デフォルトの名無しさんNGNG
>>330
死んでくれ
0332デフォルトの名無しさんNGNG
>>331
なんで?
0333デフォルトの名無しさんNGNG
参照という言葉が気に入らないだけかな。
0334デフォルトの名無しさんNGNG
代入だろ
0335デフォルトの名無しさんNGNG
初期化だ。
0336デフォルトの名無しさんNGNG
また初期化厨か...
0337デフォルトの名無しさんNGNG
** しちゃってるんだから x は主語にならないだろ
0338デフォルトの名無しさんNGNG
何が気に入らないって、
int a=1,b=2,*s1,*s2,**x=&s1,**y=&s2,*tmp;
を1行に書いているところだ。1行にまとめるメリットなんてないし、
みづらいし、初心者が勘違いしやすいし。
もう、アフォか馬鹿かと(ry
0339デフォルトの名無しさんNGNG
>>338
諦めろ。初心者に勘違いするなというには
C の仕様は糞過ぎる。
0340デフォルトの名無しさんNGNG
int i,j;くらいは一行にしてほしいが、こういくつも並べられると嫌だな。
あとポインタとそうでないものは別にした方がいいね。
0341デフォルトの名無しさんNGNG
>>338
漏れもそうお思ったな。
なんでもかんでも1行に書くのは悪い癖だ。
いわゆるBasic上がりの厨にしか見えない。

int a=1,b=2;
int *s1,*s2,*tmp;
int **x,**y;

s1 = &a;
s2 = &b;

x = &s1;
y = &s2;

こう書けば素直に理解できないか?
0342デフォルトの名無しさんNGNG
>>341
ポインタの初期化はしちゃってもいいと思うけど、型ごとに分けるのは同意。
今更だけど、intとint *、それにint **は違う型なのにごちゃ混ぜにして変数を定義できる仕様は糞だなぁ。
0343デフォルトの名無しさんNGNG
書けるという手段があるのはCの特徴でもあるしなぁ・・・。

っていうか、理解してないからごっちゃに書いてしまう。
理解しようとおもったら、違う物はわけて書いてみるとか
工夫しないと、意味はわからなくても、int int * int ** は
見た目違うんだからさ。
0344デフォルトの名無しさんNGNG
1. すべての命令を1 クロックで実行できるマイクロプロセッサがあるとする。クロック
が1 GHz とすれば1 秒間に何命令実行できるか。
2. ふたつの画像をスーパーインポーズ合成するには、(i) 両画像の同じ位置の画素値の
読みだし、(ii) 整数の加算および除算を各1 回、(iii) 計算結果をメモリに格納、の操
作を各画素について行う必要がある。1. と同じマイクロプロセッサで100 万画素の
画像を処理する場合にデータロード-演算-ストアに要する正身の時間を計算で求めな
さい。
これの2に答えてください。
板違いでしょうけどおねがいします。
0345デフォルトの名無しさんNGNG
その上スレ違いだ
アセンブラの方にいけばマシだったのになぁ
0346デフォルトの名無しさんNGNG
ところで>>310はここまでのアフォなやりとりから得るものはあったのか?
0347デフォルトの名無しさんNGNG
>>344
ネタ
0348デフォルトの名無しさんNGNG
スーパーインポーズ合成する命令セットを持っていると仮定していいなら、
1[ms]だね。
0349デフォルトの名無しさんNGNG
344は"パソコン一般"からやってきたマルチ。
0350デフォルトの名無しさんNGNG
ロード、ストアはインデックス値を自動で更新するとみていいんだよな?
あーしかし2画像あるわけだから(ry
0351デフォルトの名無しさんNGNG
char str[] = "ABCDE";

ってのは配列の個数宣言しなくてもできるようですが
適切な配列数を自動的に用意してくれると考えていいんでしょうか?
0352デフォルトの名無しさんNGNG
>>351
考えていいんです。
最後に '\0' が付く (従って str は 6 バイト) 事を忘れなければ。
0353デフォルトの名無しさんNGNG
>>351
仮にsizeof str==5だと思っていたとして、キミは何を意図してそれを書いたんだ?
0354デフォルトの名無しさんNGNG
↑
ぼるじょあの宿題スレで意味わからんツッコミをしたやつが
居たから混乱したんだろう。
0355デフォルトの名無しさんNGNG
BCCで質問があるんですが

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

main()
{
printf("Hello\n");
}

こんなソースをコンパイルした場合に、
Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
と出ているんですが、何が原因でしょうか。
初めてBCCを使うんで、何とか初期設定が終わって、コンパイルできるか試したんですが…
0356デフォルトの名無しさんNGNG
>>355
http://pc5.2ch.net/test/read.cgi/tech/1054390397/
0357355NGNG
>>356
スレ違いでしたか。
すみませんでした。あちらで聞きます。
0358デフォルトの名無しさんNGNG
struct object {int x;int y;int rad};

int judgeA(object obj1,object obj2){
int res
if((fabs(obj1.x-obj2.x)<obj1.rad+obj2.rad) && (fabs(obj1.y-obj2.y)<obj1.rad+obj2.rad)){
res=TRUE;
} else {
res=FALSE;
}

こんな感じであたり判定を作ろうとしたのですが、
judgeA関数でobjectを使えないとか言うエラーが出てきて上手くいきません。
正しくはどうすればいいのか教えて下さい。
0359デフォルトの名無しさんNGNG
>>358
objectなんて型はないから。
objectの前にstructをつけろ。
0360デフォルトの名無しさんNGNG
>>358
typedef struct {int x;int y;int rad} object;
0361デフォルトの名無しさんNGNG
"int rad" ってせみころんいらんのかえ?
0362デフォルトの名無しさんNGNG
"int res" ってせみころんいらんのかえ?
0363デフォルトの名無しさんNGNG
>>361
いる。
0364デフォルトの名無しさんNGNG
(^_^;;;;;;;;;;;;;;;;;;;
0365デフォルトの名無しさんNGNG
すいません。
教えてください。

関数へのポインタってどういう風に役に立つんでしょうか?
ポインタなんて使わずに直接その関数を呼び出せばいいと思うのですが・・
0366デフォルトの名無しさんNGNG
>>365
Strategy パターンや、Stateパターンが、実装できます。
0367デフォルトの名無しさんNGNG
>>365
qsort()について調べれば分かります。
0368デフォルトの名無しさんNGNG
すみません、
適当な文字列を文字コードにして吐き出したいんです。

変換前:2ch
変換後:080391(適当)
0369デフォルトの名無しさんNGNG
そうですか。がんばってください。
0370デフォルトの名無しさんNGNG
気分によって違う関数を呼びたい時もあるだろ。
0371デフォルトの名無しさんNGNG
>>365
そうだねw
0372デフォルトの名無しさんNGNG
こんなこというとアレだが、どんな本でもいいからCの本読んだら、
関数のポインタが載ってて、そこに使用例書いてあるだろう・・・。
0373デフォルトの名無しさんNGNG
>>368
char c = 'a';
printf("%c, %d\n", c, c);
0374デフォルトの名無しさんNGNG
>>372
そういう基本的な本に書いてある例なら、「直接関数呼び出せばいいんじゃないの?」
としか思えないのです。

私は初心者なのでよく分からないのですが、Strategy パターンや、Stateパターン、
qsort()について調べれば分かるってことですかね。

0375デフォルトの名無しさんNGNG
簡単なゲームを作ってるんですが、自作関数をfor文の中に書くか
外に書くかで悩んでます。
自作関数の中にfor文を書くとbreakが使えるのですが、for文の中に自作関数
を書くと自作関数からreturnを得て、その数値をifで判定してbreakってなるんですけど
どっちがいいんでしょうか?
0376デフォルトの名無しさんNGNG
イベントドリブンなプログラミングだと、システムから呼ばれるためのコールバック関数を登録しなきゃならなくなるけどそういう時関数をポインタで登録することが出来る。
まぁ、困らないうちは無理に使わなくて良いんだけどな。
0377デフォルトの名無しさんNGNG
>>373
ありがとうございます。

for (i=0;ch[i] !='\0';i++){
printf("%x",ch[i]);
}

結果:326368616e6e656c

これを変数に渡すにはどうすればいいのでしょうか?
0378デフォルトの名無しさんNGNG
sprintf
0379デフォルトの名無しさんNGNG
>>375
状況による。そのループが何のためのループなのか。
0380デフォルトの名無しさんNGNG
>>376
作っているレベルが低いってこともあるのですが、今まで困ったことはないです。
でも、使わないと出来ないことってあるんですね。
今度調べてみます。
0381デフォルトの名無しさんNGNG
>>375
おまえ、今とっても大事な分岐点にいる。
構造化とは何か、いちばん根っこを問われてる。

なぜ、breakが必要になった?
なぜ、途中returnでフラグを返す必要が出た?

自分で考えないと、教条主義じゃ意味ないが
1つだけヒントを言っておく。

その関数、アフォ対応に凝りすぎてないか?
0382デフォルトの名無しさんNGNG
>おまえ、今とっても大事な分岐点にいる。
なんかワロタ。でもある意味同意。
0383デフォルトの名無しさんNGNG
>>377
>>378が言うようにsprintf()を使う。
char buf[128] = "";
for (i = 0; ch[i] != '\0'; i++)
 sprintf(buf + strlen(buf), "%x", ch[i]);
0384デフォルトの名無しさんNGNG
>>383
ありがとーーー!!!!
これで6時間悩んでた_| ̄|○
0385デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void)
{
    signed short a=0xFFFF;

    a=a>>1;
      :
      :(省略)
      :

テストプログラムを作っていました。
これをコンパイルすると、

『定数値が切り捨てられました。』
『'const int' から 'short' へ切り詰めます』

と言う二つの警告が出るのです。
オーバーフローが起きてるはずはないと思うんですが。
なぜでしか?
0386デフォルトの名無しさんNGNG
>>385
1はint
だからa>>1のaはintに格上げされて計算される。
それをa=のところでshort intの変数に入れようとするから・・・ね?

あと関係ないけど、charでないかぎりsignedはいらない。
0387386NGNG
それらしく書いたけど、なんの根拠もなしに書いちゃった。
だから間違っているかも。
0388デフォルトの名無しさんNGNG
>>386さん
いや、マジでありがとうございます!
他の掲示板でも聞いて回ってたんですが、なんかやっと納得できる答えに
めぐりあえた感じです。
書き込んでなかったけど、同じ方法intでやったら警告でないんですよ!
ほんとすっきりしました!
どうもです!m(._.)m
0389デフォルトの名無しさんNGNG
>>385
0xffffはsigned shortに収まらないので、そういうメッセージがでたんでしょ。
aに何を入れたかったんだろう?
0390デフォルトの名無しさんNGNG
>>386-388
おいおい・・・
0391386NGNG
const
↑そうか。constだから初期化の時点での警告か。

やっぱり見当違いだった(恥
0392385NGNG
むむむ・・・
まずconstがなんぞやから勉強してきます。 _| ̄|○
0393デフォルトの名無しさんNGNG
でもまー、>>385の内容ではshortが2バイト以下だともワカランしな。
オーバーフローが起きてるはずはないと思う根拠くらい示してくれないとまともな答えは出んな。
0394デフォルトの名無しさんNGNG
>>391-392
おいおい・・・
0395375NGNG
試行錯誤しています。

プログラミングは答えを見つけるのが大切なのではなく、決められた答えに対して
いかに問題を作るかというのが大切なんだと思いました。

動くことが「答え」ならば、どういうアプローチで動かすかが「問題」になります。
答えは一つですが、問題は何十通り何百通りもありその中でベストな問題を
選択することがプログラミングのような気がしてきました。

なんか、悟ったようなこと書いてすんません。
0396386NGNG
>>394
ん?今度はおかしなことは言っていないはずだけど?
ここで言っているconst intって0xFFFFの(型の)ことでしょ?
0397デフォルトの名無しさんNGNG
Cで作った黒いDOS窓の
プログラムの処理スピードを調べるには
どうしたらいいですかね? やっぱ無いですか?

ifという条件文が入るとどれだけスピードが落ちるのか
とか結構気になります。
0398デフォルトの名無しさんNGNG
>>397
clock
0399デフォルトの名無しさんNGNG
>>396
constかどうかは今回の問題点じゃないでしょ。
385の環境がなんだかわからないが、まず間違いなくshortが16ビットなんだと思う。
で、おそらくこの環境でsigned short が扱えるのは-32768から-32767。
に対して0xffffは65535だろ。オーバーフローしてるじゃん。
0400デフォルトの名無しさんNGNG
>>399
ちっ、typoしちまった。
-32768 から 32767 ね。
windowsマシンならこの範囲だろう。
0401デフォルトの名無しさんNGNG
>>399さん
前聞いたときもそれと同じ回答が返ってきましたが、
0xffffは-1だと思ってたんですが。
あと、自分の環境ではshortは16ビットだと思います。
0402デフォルトの名無しさんNGNG
>>398
clock_t clock( void ); (´▽` )!!
どうもです。
0403デフォルトの名無しさんNGNG
>>397
time
GetTickCount
QueryPerformanceCounter
rdtsc
0404386NGNG
>>399
constかどうかが問題とは言っていないよ。
コンパイラはconst intと言っているのだから、問題はa=a>>1のところではなく、signed short a=0xFFFFのところだね。と。
0405デフォルトの名無しさんNGNG
省略しているが、下のコードでは怒られるのか?

#include<stdio.h>
int main(void)
{
    signed short a=0xFFFF;

    a=a>>1;
    return 0;
}
0406デフォルトの名無しさんNGNG
>>405
はい、今確認しましたが、上記と同じ警告が出ます。
0407デフォルトの名無しさんNGNG
-1を入れたかったらsigned short a=-1で良いのでは?
0408デフォルトの名無しさんNGNG
>>401
>0xffffは-1だと思ってたんですが。

コンパイラはそうは思ってくれなかったわけだ。
-1を入れたいなら-1と書こう。

>>405
警告が出るかどうかはコンパイラやコンパイルオプション次第でしょ。
0409デフォルトの名無しさんNGNG
>>405
それはそうなんですが、「どうしてかな〜」と
とても気になっていたものでして(;´Д‘)
0410デフォルトの名無しさんNGNG
因みにコンパイラはなんですか?
0411デフォルトの名無しさんNGNG
>>395
今更んなこと言わなくても、昔の人の名言が全て。

「プログラム = アルゴリズム + データ構造」
0412デフォルトの名無しさんNGNG
Visual C++ と言えばわかって頂けるでしょうか?
どこをどう調べればいいやら、あんまよくわかりません。 (´・ω・‘)
0413デフォルトの名無しさんNGNG
VC++6.0SP5で/W4をつけて>>405をコンパイルしたらこうでた。

a.c(4) : warning C4305: 'initializing' : 'const int ' から 'short ' へ切り詰
めます。
a.c(6) : warning C4244: '=' : 'int ' から 'short ' に変換しました。データが失わ
れているかもしれません。
0414デフォルトの名無しさんNGNG
unsigned short a=0xFFFF;
に変えて怒られなければ、>>399の見解であってるんじゃねーの?
0415デフォルトの名無しさんNGNG
共用体って存在価値あるの?
0416デフォルトの名無しさんNGNG
ある
0417デフォルトの名無しさんNGNG
>>415
低級言語的な使い方では存在価値がある。
0418デフォルトの名無しさんNGNG
じゃあ負の数を16進数で書いてみろよ!
0419デフォルトの名無しさんNGNG
>>418
-0x01
0420デフォルトの名無しさんNGNG
>>419
プププ君みたいな低脳こないほうがいいよ
正しくは0x-01だ
0421デフォルトの名無しさんNGNG
>>401
仮に君の環境が16bitだたとするある。
そうだとしても、
符号無し整数を符号付き整数に変換して
なおかつその符号無し整数の値が符号付き整数で表せない範囲
だた場合、結果は処理系定義になるある。
だから、-1 の代わりに 0xFFFF などと書くのは止めれ。

0422421NGNG
ちなみに、逆の場合、つまるとろこ、
-1 を 符号無しに変換した場合、
16bit 環境なら、0xffff に成ると期待して良いあるよ。
たとえ君の環境での負数の表現が2の補数で無かったとしてもね。
0423デフォルトの名無しさんNGNG
なんかすごくツマラン展開だな
0424デフォルトの名無しさんNGNG
課題:C native で全く新しいデータ構造を5年以内に創造しなさい
0425デフォルトの名無しさんNGNG
さらにつまらん
0426デフォルトの名無しさんNGNG
6個の整数を読み込んで、それらの最大値と最小値の差を出力する プログラムを
作成せよ。
入力した整数は int 型配列 nums に代入すること。また最大値と最小値の 差は、int 型
の配列 vc の最初の no 個の要素の最大値と
最小値の差を 返す関数 widtharray(int vc[], int no) を作成して計算せよ。 即ち、
main 関数の中での widtharray の呼び出しは、
widtharray(nums, 6) で行う。
0427デフォルトの名無しさんNGNG
>>422
それは変じゃないか?

元の式の値が変換後の型で表現できない場合の結果が未定義なら
(unsigned)-1 はギルティやん
符号なしでフェンスが欲しいときは~0uちゃうのか

それから、この流れでUSHRT_MAXが出てこないのはネタか?
0428デフォルトの名無しさんNGNG
>>420
うわぁぁん騙された。
0429デフォルトの名無しさんNGNG
初めてのC
http://news13.2ch.net/test/read.cgi/newsplus/1087483487/
0430デフォルトの名無しさんNGNG
>>427
だうと
~0はビットを反転するから、bit表現がオール1
になる。その数値としての値はモロに負数の表現方法に
依存することになり、処理系依存。
signed -1 => unsigned の変換は modulo 2^(ビット数)
で行われるから、2進数でオール1になる。ビット表現は
その処理系で適切なものが選択されるからそれがオール1になる
保証は全く無い。
0431デフォルトの名無しさんNGNG
>>430
~とuの評価順序は?
0432デフォルトの名無しさんNGNG
>>430
ビット表現が「その処理系で適切なものが選択される」のに
modulo 2^(ビット数)と決めてかかれるのか?
0433デフォルトの名無しさんNGNG
>>432
規格書にはそう書いてるよ。
0434デフォルトの名無しさんNGNG
>>433
よく読めよ、言ってること矛盾してるだろ
0435デフォルトの名無しさんNGNG
>>433
おまえさんの言う「ビット表現」とは、符号ビットのことか、それともデータビットのことか
一方は未規定、他方は(ピー)表現と書いてあるが
おまえさんの話はそのへんをはっきり言ってない
0436デフォルトの名無しさんNGNG
規格書では、~, >>, << は
物理的なビット表現をいじると明示的に書いている。
一方、整数 (integral type) は物理的なビット表現
(負数の表現方法を含む)については全て処理系依存
だとしている。
ちなみに、さっき「2^bit数」と書いたけど、正確には
「符号無し整数で表される最大の数+1」を
君達が分かりやすいように書き換えたのだがそれが
誤解を与えたことは移管に思う。
0437436NGNG
符号無し整数は、規格書では、
数学的に
「符号無し整数で表される最大の数+1」を法とする剰余系
で定義されている。
符号付き整数を符号無し整数に変換するときも
この数学的な意味に沿って変換が行われる、と定義されている。
0438デフォルトの名無しさんNGNG
>>436
うだうだ言いだす前に「ビット表現」とは何のことを言っているのか、はっきりさせてからにしろ
「処理系依存」とは処理系定義か未規定か未定義か、いずれにしても「全て」じゃねえぞ
最後の4行は意味不明
0439デフォルトの名無しさんNGNG
それから~とuの結合規則について放置したままだよな
符合なしの話に符号付きが出てくること自体おかしいと
まだ気づかないのか?
0440初心者Lv0NGNG
プログラム実行すると実行画面みたいのがでてすぐ消えちゃうんですが
どうしたらよいでしょうか?
自分でもいろいろ試してみたいのですが設定とかは変える必要ってあるのですか?
0441デフォルトの名無しさんNGNG
>>440
[F5]ではなく[Shift]+[F5]
0442デフォルトの名無しさんNGNG
おい436、おぢさんはこれから用事があって出かけにゃならん
慌てなくていいからじっくり考えとけ

夕方くらいには戻る予定だ
0443デフォルトの名無しさんNGNG
ここはネタの燃費がいいインターネットですね
0444初心者Lv1NGNG
>>441
できました!ありがとうございます、ちょっと感動^^
自分は[Shift]+[F5] ではなく[Ctrl]+[F5]だったのですがソフトの違いか何かですか?
0445デフォルトの名無しさんNGNG
カッコの位置なんだけど、

    while( true ) {

こんな風に1行にまとめる人と、

    while( true )
    {

2行にする人いるだろ?
前者の方がオレは好きなんだけど、try は

    try {

こう書くと変な感じがするから、統一性を持たせたいなら

    try
    {

    while( true )
    {

とすべきだよな。
みんな、どうよゴルァ。
0446デフォルトの名無しさんNGNG
>>445
「変な感じがする」ってのは主観なのでなんとも。
ともあれコーディング規約ネタは専用のスレが二つぐらいあったので
そっちでやって欲しい気が
0447デフォルトの名無しさんNGNG
while
( 1 )
{

}
0448デフォルトの名無しさんNGNG
マジレスするとネスト内は ) { でネスト外は {
0449デフォルトの名無しさんNGNG
それだとネスト外というのは関数だけということに
なってしまうが。。。(name space内だと関数も
ネスト内のような扱いなのか?)
0450デフォルトの名無しさんNGNG
>>449
とりあえずここはCスレなのでnamespaceは無い
0451デフォルトの名無しさんNGNG
だから隔離スレでやれっつうの
0452449NGNG
orz
0453デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=117&fi=no

上のプログラムの、以下の部分がよくわかりません。一行ずつ解説して頂けませんか?

if( *word ){ /*コメントを入れてください*/
*last_word++=word;        /*コメントを入れてください*/
for(;*word;++word) *word=tolower(*word); /*コメントを入れてください*/
if( last_word == word_list+sizeof(word_list) ) break; /*コメントを入れてください*/
}
0454デフォルトの名無しさんNGNG
> カッコの位置なんだけど、
>     while( true ) {
> こんな風に1行にまとめる人と、
>     while( true )
>     {

それ以前に、
空白あけろ
空白あけるな
空白あけるな

中括弧以前の問題!
0455デフォルトの名無しさんNGNG
こんにちは。早速ですが。

Visual BasicのSendKeysみたいな事をLinux+C言語でやりたいんです。

つまり「標準入力(キーボード)で特定のデータを入力した」
ような事を行わせたいのです。

どうしたらいいのか見当がつきません。
ヒントでもいいからお恵み下さい。
0456デフォルトの名無しさんNGNG
if (*p != '\0') {
  for (*last++ = p; *p != '\0'; p++)
    *p = tolower(*p);
  if (last == wlist + sizeof(wlist))
    break;
}
0457デフォルトの名無しさんNGNG
>>445
べきも糞もねえんだよ
勝手な俺理論でコーディング基準を破るな
キョーレツくだらねえことで無駄な喧嘩を売り歩くな
                     ~~~~~
わかるか? わかんねーから「べき」とか言ってるんだろうな

そんなのは伺いをたてることであって
こっちから押し付けに行くことじゃない
0458デフォルトの名無しさんNGNG
なーんてまぬけなことを言ってるやつがいるから
2chなんだろうなあ。
0459デフォルトの名無しさんNGNG
16bitで、

2の補数方式で、-1が0xffffだったら、
1の補数方式では、0xffffは-1じゃなくて-0なんじゃないの? -1が0xfffeで
0460デフォルトの名無しさんNGNG
i =6;
while
(
 --i
)
{
 putchar("H ELLO"[i]);
};
0461デフォルトの名無しさんNGNG
453のソースは何気に酷い気がするんですけど
俺の頭が悪いんですかね
0462デフォルトの名無しさんNGNG
> };

このセミコロンはなんだ!
0463デフォルトの名無しさんNGNG
>>459
ありうるね
0464デフォルトの名無しさんNGNG
あのー463みたいに「しったかぶり」の返事がほしいんじゃないんですが...

「ありうる」かどうかではなくて、「そういう定義だろ?」っていう意味です。
0465デフォルトの名無しさんNGNG
前後を見てないが

if( *word ){ /*WORDが0でなければ*/
*last_word++=word; /*last_wordが指し示す先にwordを代入したあと、last_wordをインクリメント*/
for(;*word;++word) *word=tolower(*word); /*wordが0になるまで小文字に変換する*/
if( last_word == word_list+sizeof(word_list) ) break; /*last_wordがword_listの終端ならループを抜ける*/
}
0466デフォルトの名無しさんNGNG
i = 6
while (--i > 0)
  putchar("H ELLO"[i]);

改良するなら

for (i = 5; i >= 0; i--)
  putchar("H ELLO"[i]);



ちなみに、iが0になったときは実行されないのでは?
0467デフォルトの名無しさんNGNG
>>464
具体的な処理系の例を挙げないとSFの域を出てないだろ
0468デフォルトの名無しさんNGNG
>>455
標準入力でいいのなら、パイプ開いてテキスト流しこむ。
GUI(X)でのイベントの送り方は忘れた。
0469デフォルトの名無しさんNGNG
>>467
あ、こいつやっぱりわかってないな ;-)

ちゃんと「2の補数形式で」ってかいてあるのに、どうやらそれの意味が理解できないらしい。
やーい
0470デフォルトの名無しさんNGNG
>>469
やーい 
     ~~~~~~~~~~~~~
     台詞がないねw

具体例が出ない以上しかたないよな
0471デフォルトの名無しさんNGNG
わーい
0472デフォルトの名無しさんNGNG
あほくせ
0473デフォルトの名無しさんNGNG
469まで読んだ。
痛さ度は7:3で469のが痛かった。

470まで読んだ。
痛さ度は8:2で470の方が痛くなった。
0474デフォルトの名無しさんNGNG
1の補数表現は、全てのビットを反転する = 符号を反転する、が定義。
0x0000 = +0 なら 0xffff = -0 で、0x0001 が +1 なら 0xfffe = -1 となる。

そういうシステムが、現在使用されているかどうかは不問。
Cでは、存在するものとして扱わなければならないということだけだ。
0475デフォルトの名無しさんNGNG
> そういうシステムが、現在使用されているかどうかは不問。

けっこうあるよん。

> Cでは、存在するものとして扱わなければならないということだけだ。

昔はもともとそういう実装でもいける言語仕様だったわけですが、
一時期は「そんなものはない」ってことにしてしまいたかったけど、
1980年以来たくさん流入したFortranユーザーたちの使う処理系も
考えると、どけちゃえなかったのよねー > 1の補数マシン

0476デフォルトの名無しさんNGNG
じゃあ、422の書いてる。

> ちなみに、逆の場合、つまるとろこ、
> -1 を 符号無しに変換した場合、
> 16bit 環境なら、0xffff に成ると期待して良いあるよ。
> たとえ君の環境での負数の表現が2の補数で無かったとしてもね。

は、まったくのウソじゃん。
0477デフォルトの名無しさんNGNG
あ、わかった!

422 == 463 == 467 == 470 かー



かっこわるすぎー
0478デフォルトの名無しさんNGNG
>>477
>422 == 463 == 467 == 470

A == B == C == D
これがTRUEになるABCDの組み合わせを述べよ。
0479デフォルトの名無しさんNGNG
良いあるよ。
0480デフォルトの名無しさんNGNG
>>479
良いある算数
だろ、もうちっとヒネれよ
0481427NGNG
で、結局
(unsigned)-1
は正しいのかよ?

早く答えろよ
0482デフォルトの名無しさんNGNG
符号なしの-1なんぞ言い出したのは、オマエかー!
0483デフォルトの名無しさんNGNG
>>482
中傷しかできないアフォはこの板から出てけ
0484デフォルトの名無しさんNGNG
>>483
内容を確認せずに言ってしまった。スマソ。
ちなみにどこが中傷かは皆目見当がつかんが。
0485デフォルトの名無しさんNGNG
>>465
詳しく教えて下さってありがとうございました。
0486デフォルトの名無しさんNGNG
>>484
符合なしの-1なんぞ言い出したのが誰だか確認しろ
0487デフォルトの名無しさんNGNG
>>486
確認したよ。ごめんねー。
0488デフォルトの名無しさんNGNG
>>487
http://www.retecool.com/braindead/maggots-in-brain.jpg
オマエの頭ん中か?
0489デフォルトの名無しさんNGNG
なんだ、ただの煽りに成り下がったか。つまらん。
0490デフォルトの名無しさんNGNG
つまんねーのはオマエだ
技術的な話ができねえ奴は消えろ
0491デフォルトの名無しさんNGNG
>>489
昨日HSPスレで暴れてた馬鹿だろ?
http://age.tubo.80.kg/age01/img-box/img20040620002231.html

Cを使う者として俺らはお前を認めない。消えろ。
0492デフォルトの名無しさんNGNG
よっぽど悔しかったんだなw
0493デフォルトの名無しさんNGNG
HSPさえ使えないヘタレだったとはね。
Cなんて何にも理解してないんじゃないの?
0494デフォルトの名無しさんNGNG
                 ┌─┐
                 |も.|
                 |う |
                 │来│
                 │ね│
                 │え .|
                 │よ .|
      バカ    ゴルァ  │ !!.│
                 └─┤    プンプン
    ヽ(`Д´)ノ ヽ(`Д´)ノ  (`Д´)ノ    ( `Д)
    | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U
〜 〜  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎−>┘◎
0495デフォルトの名無しさんNGNG
>>493
理解してるかどうか試せないのかw
0496デフォルトの名無しさんNGNG
なんかおもろいな。
0497デフォルトの名無しさんNGNG
HSP煽ってる時点でry
0498デフォルトの名無しさんNGNG
>>497
「で」か「を」かどっちだ? 肝心なところを省略するな
0499デフォルトの名無しさんNGNG
煽ってる時点で終わりだな。
比較対象にしようとすることが間違いで言語の適性とかそんなことは考えない。
「虎の威を借る狐」に過ぎない。
0500デフォルトの名無しさんNGNG
>>499
比較ってどんな比較だよ
ソース示せないアフォはこの板から出てけ
0501デフォルトの名無しさんNGNG
s/ソース/コード例/
0502デフォルトの名無しさんNGNG
391 :デフォルトの名無しさん :04/06/15 21:44

>>384
アセンブラができることを自慢するな。そんなもん必須だボケ。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

433 :デフォルトの名無しさん :04/06/15 22:04

>実は何もできません。都合が悪くなると逃げます。
>* 言 う だ け な ら 誰 で も *

これ言いたかっただけだろ。もう中学生レベル。
俺はアセンブラはZ80とXアセンブラしか知らん。
つーか俺に指図すんな凡夫。


こんな奴がC一つとっても出来ると思うか?
こんなのはCどころかVBさえ危ういんじゃないの?
0503デフォルトの名無しさんNGNG
>>502
>こんな奴がC一つとっても出来ると思うか?
>こんなのはCどころかVBさえ危ういんじゃないの?

実証ができず推測しかできないアフォはこの板から出てけ
0504デフォルトの名無しさんNGNG
test
0505デフォルトの名無しさんNGNG
「静的に」と「動的に」メモリを確保する、の違いがわかりません。
どういう意味ですか?
0506デフォルトの名無しさんNGNG
sprintf関数とgets関数の意味がよくわからないので教えてください。
0507デフォルトの名無しさんNGNG
Cは確かにとりあえず何でもできる。実行速度も速い。ただ簡単かといえば・・・
HSPは遅いし低機能だけどGUIは弄りやすいし簡単なことは一通りできてしまう。
何を比較するのか?機能?簡単さ?比べ物になんないだろ。
極端に言えばエクセルとワードを比較するようなもんだぞ。
同じアプリだからといって優劣はつけられないだろ。優れた点もあるし劣った点もある。
その比較対象を絞れば(ex: 表計算能力とか)そりゃできるだろうよ。
でもそれは本当に正しい比較なのか?ワードで表計算するのか?
そんな簡単なことも知らない奴はプログラムするべきじゃないな。
身近な例を出せばCとC++を比較してどっちがいいって話だ。
0508デフォルトの名無しさんNGNG
>>503
推測?そんな馬鹿な。

アセンブラができることを自慢するな。そんなもん必須だボケ。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
俺はアセンブラはZ80とXアセンブラしか知らん。

アセンブラ必須って言っておいて普通Cで使うであろうアセンブラは8086だろ。
そんな論法的にも「できません。」って言ってるような奴にできたらすごいな。ああすごいよ。
0509デフォルトの名無しさんNGNG
>>508
スレ違い

こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
0510デフォルトの名無しさんNGNG
>>509
インラインアセンブラの話ね。一応書いとくと。
0511デフォルトの名無しさんNGNG
>>510
板違い

マ板へどうぞ
0512デフォルトの名無しさんNGNG
ここはC厨だらけのスレですね。

http://age.tubo.80.kg/age01/img-box/img20040620002231.html
0513デフォルトの名無しさんNGNG
>>487だけど、なんでこんなに荒れてんの?
0514デフォルトの名無しさんNGNG
>>506
どこまでわかっているかを言ってみ
不足分の補充か、誤りの訂正から始めようや
0515デフォルトの名無しさんNGNG
ここは空気の流れが厨なイソターネットですね。
0516デフォルトの名無しさんNGNG
アセンブラなんて簡単じゃん。Cからコンパイラで吐かせてもいいし
アセンブラは言語仕様がシンプルなんで対応表を基にして書けばいいし
とにかくCコードのコアはアセンブラで記述するのはデファクトだろう
0517デフォルトの名無しさんNGNG
>>516
こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
0518デフォルトの名無しさんNGNG
>>516
古典の先公になれ。同じこというから。
0519デフォルトの名無しさんNGNG
>>518
それをいうならそもそもCも(ry
0520デフォルトの名無しさんNGNG
>>519
狭すぎ
0521デフォルトの名無しさんNGNG
簡単とか言うってことはきっと助動詞の表なんてすらすら出てくるんだろうな。
ああすごいな。見習いたいなw

C言語は本で独習しましたが何か?
0522デフォルトの名無しさんNGNG
次の質問どーぞ↓
0523デフォルトの名無しさんNGNG
C nativeで全く新しいデータ構造を5年以内n
0524デフォルトの名無しさんNGNG
Cコンパイラってどこにありますか?
0525デフォルトの名無しさんNGNG
>>524
自分で見つけられないなら買え
0526デフォルトの名無しさんNGNG
>>524
欲しいの?
0527デフォルトの名無しさんNGNG
おまえら生理だろ?
0528デフォルトの名無しさんNGNG
>>524
用語がわかんねえんだろ
翻訳環境のことだよ
0529デフォルトの名無しさんNGNG
GNU
0530デフォルトの名無しさんNGNG
>>505
コンパイル・リンク時に確保されるのが「静的」
実行時に確保されるのが「動的」
0531デフォルトの名無しさんNGNG
GNUのソースなどでよくみかける
^L はどういう意味なのでしょうか。

例えばemacs21.3ではemacs-21.3/src/emacs.c の288行目、393行目などで
見かけます。

どなたかよろしくおねがいします。
0532デフォルトの名無しさんNGNG
改ページコードだよ。
0533531NGNG
即レスありがとうございます。
これを頼りにいろいろ調べます。
0534デフォルトの名無しさんNGNG
c初心者です。メモリの動的割り当て、メモリの開放のための関数malloc,freeについて質問します。プログラムを組んでみました。次のソースをみてください。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct node{
char name[10];
struct node *ptr;
}

main(){
struct node *root=NULL;
printf("%s\n",root->name);
root=(struct node *) malloc (sizeof(struct node));
printf("%s\n",root->name);
strcpy(root->name, "a");
printf("%s\n",root->name);
free(root);
printf("%s\n",root->name);
}
実行結果は
(null)
[@
a
[@
となります。自分はfreeというのはmallocをする前の状態にもどすための関数、だと理解していますが、実行結果を見てみるとどうも違いますね。mallocをする前の状態に戻す、つまり、実行結果を
(null)
[@
a
(null)
となるようにしたいのですが、どうすればいいのでしょうか?どなたか教えてください、お願いします。
0535デフォルトの名無しさんNGNG
534は
struct node *root=NULL;
printf("%s\n",root->name);
の時点でsegmentation faultになると思います。
rootの指すstruct node領域がないからです。
0536デフォルトの名無しさんNGNG
メモリ確保したらもともと何かの数字がはいってない?
でもメモリ解放したら前と値変わるのでわ?
0537デフォルトの名無しさんNGNG
>534
free()は単純にメモリを解放する関数。
ただ、解放した分使用可能なメモリが増えるかといえば、
一概にそうとはいえない(環境による)。
ちなみにfree()した領域にアクセスしてはいけない。

free(p);としても、pの持つ値は絶対に変わらない。
何故、絶対に変わらないのか分からないなら、
それはポインタに対する理解が足りていない証拠。
0538デフォルトの名無しさんNGNG
#define Free(p) (free(p),(p)=0)
こういうマクロを使っている人がいるかもね。あとfcloseなんかも。
0539デフォルトの名無しさんNGNG
元がvoidだから、
#define Free(p) ((void)(free(p),(p)=0))
こうした方がいいかな。
0540デフォルトの名無しさんNGNG
そのマクロの値は常に0になるべ。正しくはこうでしょ。
#define Free(p) (free(p), (void)(p) = 0)
0541デフォルトの名無しさんNGNG
いたたた、540訂正。
#define Free(p) (free(p), (void)(p = 0))
0542デフォルトの名無しさんNGNG
p = malloc(sizeof(*p) * 2);
p = &x;
++p = &y;
〜

Free(--p);
0543デフォルトの名無しさんNGNG
>>541
それでもいいけど、>>539はカンマの両側を括弧でくくっているから、free(p),(p)=0の戻り値(?)をvoidにキャストしていて大丈夫だよ。
0544デフォルトの名無しさんNGNG
>>543
うわわ、ほんとだ。ごめん。(void)free(p)に見えてた。
0545542NGNG
間違えた。
p = malloc(sizeof(*p) * 2);
*p = x;
*++p = y;
〜

Free(--p);

こんなことすると、悲しい。
0546デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct node {
  char name[10];
  struct node *ptr;
} NODE;
typedef struct node NODE;

main()
{
  NODE *root = NULL;

  if ((root = (NODE *)malloc(sizeof(NODE)) != NULL) {
    printf("%s\n", root->name);
    strcpy(root->name, "a");
    printf("%s\n", root->name);
    free(root);
    printf("%s\n", root->name);
  }
}
0547デフォルトの名無しさんNGNG
お、safari使いだ。
0548デフォルトの名無しさんNGNG
> #define Free(p) (free(p),(p)=0)
> こういうマクロを使っている人がいるかもね。

実際やってるやついる。というか、マクロにさえせずに毎回、NULLいれてるのよ。
ようするに、無効になったポインターをまちがって使わないようにってことみたいだけど、
そんなことをするってのは、ようするに、コードのロジックを把握できてないのよね。

もともとは大人数で分担してやるきたないソースにときどきみられるやりかたなんだけど、
じゃあ、ふつうの代入文で、使わなくなった変数にわざわざ0いれて回るのかよ!ってことだ。
0549デフォルトの名無しさんNGNG
> お、safari使いだ。

Safariとはかぎらないね。うちのLinuxのブラウザーでもバックスラッシュが書けない。

Safariは昔は書けなかったけど、いまはかけるってきいたけど?
0550デフォルトの名無しさんNGNG
てすてす
printf("hello, world\n");
0551デフォルトの名無しさんNGNG
>>549
そうなのか。
~を〜、\を\と書く人はSafari使いだけだと思っていた。
0552デフォルトの名無しさんNGNG
てすてす (Safariから、その2)
printf("hello, world\n");
0553デフォルトの名無しさんNGNG
てすてす (Safariから、その3)
printf("hello, world\n");
0554デフォルトの名無しさんNGNG
>>546
> } NODE;

NODEはいらないんじゃない?
0555デフォルトの名無しさんNGNG
Linuxのソースコードを見ていて、
driver/block/elevator.cなるファイルに
inline関数が沢山定義されいるのですが、
インライン関数を.Cにて定義する意味が分りません。
なぜヘッダーにて宣言しないのでしょうか?
0556デフォルトの名無しさんNGNG
>>555
staticの代わりじゃね?
0557デフォルトの名無しさんNGNG
>>556
こういうコーディングスタイルってどうなんでしょうか?
サブルーチンを定義したいだけなら、マクロを使うべきという
気がするんですが、こういう考えは古いんですかね。
0558デフォルトの名無しさんNGNG
あ、あと上記のファイルにて定義されている関数、
例えばelv_rq_merge_ok()というものがあるんですが、
これはsttic関数ではありません。そして、
この関数に対して、他の*.cから呼び出してるような
記述があります。inline関数が外部から呼び出せる?
んー、よくわかりません。
0559デフォルトの名無しさんNGNG
>>548
二重開放のごたごたから逃れることはできる。
ちなみに、
> じゃあ、ふつうの代入文で、使わなくなった変数にわざわざ0いれて回るのかよ!ってことだ。
に関しては、変数の使いまわしをしない限り後で参照しても特に問題無いことが多い。
0560デフォルトの名無しさんNGNG
>>559
>二重開放のごたごた
>変数の使いまわしをしない限り後で参照

これらを邦訳すると「ヘボ」。


>から逃れることはできる。

逃げるより根治が必要。


>問題無いことが多い。

人的に深刻な問題である。
根治が必要。
0561デフォルトの名無しさんNGNG
そこかしこでメモリ取得/解放ルーチンを書く方が問題じゃないですか?
0562デフォルトの名無しさんNGNG
>>561
void* malloc2(...);
void* malloc3(...);
void* malloc4(...);

誰がこんなことすんだよw
0563デフォルトの名無しさんNGNG
自分は大丈夫だと思ってても、
後で呼ばれるかもしれないからなぁ。
0564デフォルトの名無しさんNGNG
どんどん意味不明になっていく
根の腐った論理(?)は動かすたびに崩れてく
0565デフォルトの名無しさんNGNG
そんなきれいごとが通じるなら苦労しません
0566デフォルトの名無しさんNGNG
>>521
大方の意見には賛成だが
「助動詞の表なんてすらすら出てくる」のは当たり前なので皮肉になってないよ
0567デフォルトの名無しさんNGNG
>>562
そこで汎用的なメモリ操作ルーチン作ってどうするよ。
そうじゃなくて、データ構造に応じてある一箇所でまとめて
取得・解放しろよってこと。
0568デフォルトの名無しさんNGNG
>>567
malloc/freeのラッパを書いてるに過ぎない。
0569デフォルトの名無しさんNGNG
>>548
スコープ切っときゃいいのにね
そうすりゃ後から間違って参照されるということはありえない
それができないってことは、構造化ができてないってことなんだろうね
0570デフォルトの名無しさんNGNG
>>567
typedef struct _Hoge { ... } Hoge;
Hoge *pHoge = hoge_alloc(...);
hoge_free(pHoge);
とか、そういうこと?
0571デフォルトの名無しさんNGNG
> NODEはいらないんじゃない?

たぶん、最初にtagなしのtypedefをしようとして、自分自身へのポインターを含むことに
気づいて、やめて、で、消し忘れた、のでは?
0572デフォルトの名無しさんNGNG
>>559
じぶんでいってて、その矛盾に気づかないのか?
0573デフォルトの名無しさんNGNG
\0
\0
printf("hello, world\n");
printf("hello, world\n");
0574デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
void * malloc(size_t size);
int global;
main()
{ int a;
printf("mainにおける(malloc)のアドレス: %p\n", &malloc);
printf("mainにおける(global)のアドレス: %p\n", &global);
printf("mainにおける(a)のアドレス: %p\n", &a);
printf("関数(main)のアドレス: %p\n", &main);
}

このプログラムを実行した結果
mainにおける(malloc)のアドレス: 20830
mainにおける(global)のアドレス: 2093c
mainにおける(a)のアドレス: ffbefc34
関数(main)のアドレス: 10614
を見てなにがわかるか考察せよ。

って出たんですがどうやって書けばいいんですか?
0575デフォルトの名無しさんNGNG
>>574
答え。 何もわからない

サンプルとして失格。
これで何かがわかったら教授より上だ。
0576デフォルトの名無しさんNGNG
mallocとglobalはデータ領域にある。
aはスタック上
mainはテキスト領域にある
ということを言わせたいんじゃないの?
0577デフォルトの名無しさんNGNG
>>574
俺がわかったこと
 ・アドレスの位置がわかった
 ・main関数の後にmalloc, global, aが配置されている

この課題はメモリ上の位置関係を考察しなさいってことですかね?
0578デフォルトの名無しさんNGNG
>>574
「4行表示されたことがわかった。」
0579デフォルトの名無しさんNGNG
>>578
ヽ(`Д´)/それだ!
0580デフォルトの名無しさんNGNG
>>574
「出題者の知能の程度が分かった」
0581デフォルトの名無しさんNGNG
>>580
ヽ(`Д´)/それだ!
0582デフォルトの名無しさんNGNG
pointer, mm の分からない人がいるスレはここですか(;´Д`)ハァハァ
0583デフォルトの名無しさんNGNG
>>574
もうちょっと突っ込んで考察してみると

アドレスの配置順は、
・malloc引数でsize_tを指定している事、malloc.hではなくstdlib.hをincludeしている事から、
 ANSIに準拠した環境である
・main 、malloc、global、aの順である
・printf中に日本語文字列を使用可能な事から、最低限日本語を扱えるコンパイラを使用している
・各アドレスは4byte毎に整列されているので、おそらく32bit環境である
・mainのアドレスとmallocのアドレス、globalのアドレス値から、
 mallocはTEXTセクションの比較的後ろの方に配置されている
・断言はきないが、mainとmallocのアドレス差から、staticリンクと
 dynamicリンクが予想されるので、仮想記憶を備えた環境で動作させている
・これだけのプログラムにも関わらず128kbyte以上のサイズを消費している事から、
 標準でリンクされるコードの多い、比較的大きめのOS上で実行された
・aのアドレスからスタックの配置からOSをある程度絞り込める
・2chで宿題の答えを聞こうとする>>574の程度の低さ
・ここが宿題スレでない事も判らない>>574のあふぉさ加減

まだ有るかもしれんが、このくらい
0584デフォルトの名無しさんNGNG
最後の二つは最重要ポイントだね。
0585デフォルトの名無しさんNGNG
>>583
ANSIがアドレスの配置順をどう規定しているんだ?
日本語文字列とやらのコード系を確認せずに何が断定できたんだ?
整列規則がどうかしたって? 実行環境がPCでそーゆーこと言うと赤っ恥かくぞ。
アドレス差からバインディングタイプを推定することは全く不可能。隣接させることさえ可能だ。
128KByteというキリの良さから連想できたことが冗談みたいに少なすぎ。

失格サンプルを出題した教授だって腐っても学者のはしくれ、
おまえさんに対する学問に対する素養を採点させると・・・
0586デフォルトの名無しさんNGNG
ここはC厨だらけのイソターネットですね
0587デフォルトの名無しさんNGNG
read C99
0588デフォルトの名無しさんNGNG
>>574
1: malloc == *malloc
2: malloc == &malloc

どっちもTRUEになるの?
0589デフォルトの名無しさんNGNG
>>588
void *(*malloc)(size_t) = 0;
galtu = malloc(1);
0590デフォルトの名無しさんNGNG
初歩的な質問だと思いますが、ちょっと詰まってしまったのでお願いします。

float や double の変数のゼロ判定はどうやってらったらよいのですか?
0による除算を避けるために判定を書きたいのですが。
0591デフォルトの名無しさんNGNG
float f;
....

if (f == 0.0) ...
0592デフォルトの名無しさんNGNG
>>591
あ、それで委員ですか。
浮動少数の == 判定は御法度だと思ってました。
もしかして0.0 の時だけ特別ですか?
0593デフォルトの名無しさんNGNG
NULL
0594デフォルトの名無しさんNGNG
>>592
有効桁数内の整数に丸め誤差は無い。
0595デフォルトの名無しさんNGNG
>>557
Linuxがどういうコンパイラを使うことを前提としているか垣間見えるじゃないか。
0596デフォルトの名無しさんNGNG
>>590
0ぴったりじゃなくても、極端に0に近い数だとやはり0除算扱いになる。
だから自分で有効桁数を決めて、絶対値がそれ以内かどうか調べるべし。
0597デフォルトの名無しさんNGNG
(゚∀゚)renice!
0598デフォルトの名無しさんNGNG
>>590
double x
あれこれ
if (x == 0)
0599デフォルトの名無しさんNGNG
浮動小数点数っ0除算したらダメなんか?
0600デフォルトの名無しさんNGNG
・除算結果がオーバーフロー
・厳密に0と評価できる
・除数がイプシロンを下回る

まあ色々考えられる罠
0601デフォルトの名無しさんNGNG
不動小数点数って0除算したら正か負の無限大になるんと違うんか?
0602デフォルトの名無しさんNGNG
ルールブックは効力の範囲を理解して読むことが大事な準備
0603デフォルトの名無しさんNGNG
0で割る計算,0除算,割り算の意味
http://www.uja.jp/contents/math/divbyzero.html
0604デフォルトの名無しさんNGNG
>>601
他に、0÷0というのがある
0605デフォルトの名無しさんNGNG
そういえば、BCCでfastmath.hをインクルードして0除算するとハングアップする。
端折り過ぎ。
0606デフォルトの名無しさんNGNG
>>603
実数と float/double は違うから。
実数では0除算しちゃだめだけど、
C言語の float/double の場合、処理系依存?
たいていは0除算の結果は∞。
0/0 は NaN。
0607デフォルトの名無しさんNGNG
実際にはIEEE 754な処理系が多いけど、C言語的には処理系依存ということ?
0608デフォルトの名無しさんNGNG
int main() {
/* リストの先頭保存用 */
List start = NULL;
/* リストを初期化 */
start = Initialize();
push(start, 1);
return 0;
}

void push(List *p, int num) {
List *data; List *next;
if(p->next != NULL) {
next = p->next;
data = add_list(p, num);
data->next = next;
p->next = data;
} else {
add_list(p, num);
}
}

List *add_list(List * head, int num) {
List *p;
p = (List *)malloc(sizeof(List));
/* 変数に代入したり、nextを代入したりする */
return p;
}

このような自己参照構造体を利用したスタックを操作するプログラムを作りました。
今のところ正常に動作していますが、関数が呼び出された後メモリが解放される筈なので、
pushは問題があるような気がします。たまたま、運良く動いているだけでしょうか?
0609デフォルトの名無しさんNGNG
>>608
free関数の呼び出しが見あたらないが。
0610608NGNG
>>609
上に書いた分はスタックに入れる関数なので、freeは載っていません。

0611デフォルトの名無しさんNGNG
>>608
p,num,data,nextは解放されるが、それが問題になるようにはみえない。そのアドレスを返しているわけでもないし。
ネタか?
0612608NGNG
書き方が悪かったようです。申し訳ありませんでした。

関数内で宣言した変数は関数の処理が終わり次第自動的に解放されますが、
今回のように関数内で新たな構造体を作成して処理するような場合でも
関数での処理が終わったら解放されてしまうか?ということです。

start→NULL
push関数を呼び出して後ろに構造体を連結する
start→構造体1→NULL
     ↑この構造体1が関数の処理が終了後解放されてしまうのではないか?

こんな感じです。
0613デフォルトの名無しさんNGNG
>>612
例えば add_listでは
変数pは開放される。
mallocした領域は開放されない。
add_listが返すmallocの返値はadd_listの外でも有効。
0614デフォルトの名無しさんNGNG
>>608 は、ポインタについて理解していないッぽ。
0615デフォルトの名無しさんNGNG
ポインタはジョジョでいうスタンド。
これに異論はないだろう。
0616デフォルトの名無しさんNGNG
>>612
mallocも関数だと分かっていれば解放されるかどうか分かるはずだ。
0617デフォルトの名無しさんNGNG
>>616
妥当にして簡潔な説明だ
これでなるほどと思うかどうかで >>612 のセンスが問われる
0618デフォルトの名無しさんNGNG
allocaみたいなのもあるけどね。
0619616NGNG
>>618
まあな。
0620デフォルトの名無しさんNGNG
ラロッカ
0621デフォルトの名無しさんNGNG
VC7でのenumerationについてお聞きしたいのですが、
enum test {hoge, moge, huge};という列挙体をenum test tmp;としたときの列挙型変数tmpは
普通のint型の変数とは何が違うのでしょうか?
試しにtmp = 4としても問題なく表示出来てしまい
enum test tmp;の代わりにint tmp;を置き換えてみても何一つ問題なく動きました。
これは処理系依存だと言うことなのでしょうか?
0622デフォルトの名無しさんNGNG
VCは使ってないので具体的な情報は書けないが、
http://www.kouno.jp/home/c_faq/c2.html#0
などが参考になる。
0623デフォルトの名無しさんNGNG
>>622
早速読んでみたいと思います。
ありがとうございました。
0624612NGNG
612です。
616さんのレスで涙がでました。Cの教本片手に首吊ってきます……。ありがとう。
0625デフォルトの名無しさんNGNG
すいません、お尋ねしたいんですが、
プログラム中で

#define SINSUU 2

という部分があるんですが、
なぜかそこで訳のわからない警告が出たんです。

WARNING C4005: 'SINSUU':マクロが再定義されました。
SINSUUの前の定義を再確認してください

というメッセージで、#define SINSUU 2 はどこを見ても一つしかありません。
そこで、

#ifndef SINSUU
#define SINSUU 4
#endif

こうしたら何とか警告は出なくなったんですが、
この対処でよかったんでしょうか?
ファイル分割をしているわけではなかったんですが、
何がいけなかったのか全くわかりません。

使用環境は Visual C++ 6.0 です。
この問題で考えられる原因に、心当たりがある方いらっしゃいませんか?
0626デフォルトの名無しさんNGNG
二重インクルードしていたんだろ。
.h ファイルはインクルードガードしとけ。
0627デフォルトの名無しさんNGNG
>>626
おぉ、ありがとうございます。
まさにそのとおり、変更後2回目のコンパイルでこの警告が出ます。
あまり大した問題で無いとわかり、安心しました。

して、その設定はどこですればいいのでしか?
0628デフォルトの名無しさんNGNG
>>627
コンパイラに添付されてるヘッダを何本か開いてみろ、共通点があるはずだ
1度でもインクルードされたかどうかのフラグを立てているわけだが
0629デフォルトの名無しさんNGNG
なるほど、勉強になりました。
どうもです。
0630デフォルトの名無しさんNGNG
自作ヘッダには多重インクルードガードしとくのが安心だよな。
stdio.h をみてみると、

#ifndef __STDIO_H
#define __STDIO_H
:
:
#endif

ってなってる。
0631デフォルトの名無しさんNGNG
> 二重インクルードしていたんだろ。

この推察はおそらく合ってるが、
そこで

> .h ファイルはインクルードガードしとけ。

こうするのはおおぼけ。
0632やれやれNGNG
このスレってFAQと宗教論争以外なんかネタないの?
0633デフォルトの名無しさんNGNG
> 自作ヘッダには多重インクルードガードしとくのが安心だよな。

逆だよ ぼけ。

標準ヘッダーみたいなものはともかく、自分でつくったファイルでやるやつはぼけ
やらないとエラーがでるようになっちゃうようなやつはおおぼけ
0634デフォルトの名無しさんNGNG
>>632
よくある質問だからFAQなんだろ
0635デフォルトの名無しさんNGNG
> あまり大した問題で無いとわかり、安心しました。

かなり問題だよ ぼけ

自分で、どれがどうインクルードしているのか把握してないわけだろ?
0636デフォルトの名無しさんNGNG
> これは処理系依存だと言うことなのでしょうか?

コンパイラーが、警告をだし「てもよい」
0637デフォルトの名無しさんNGNG
>>633
プ

標準ヘッダなみにしっかりしたの作れよ
0638デフォルトの名無しさんNGNG
fclose(stdin) とか、fclose(stdout)
は、やっても問題ありませんか?
0639デフォルトの名無しさんNGNG
問題ないです。
ただ、再度標準入出力へのポインタを取得するのは処理系依存です。
0640デフォルトの名無しさんNGNG
>>639
>処理系依存です。

俺用語で言われてもわからん
規格用語に翻訳してくれ
0641デフォルトの名無しさんNGNG
俺が答えてやろう。問題ない。終わり。
0642デフォルトの名無しさんNGNG
> 標準ヘッダなみにしっかりしたの作れよ

意味が逆だろ?
標準ヘッダーとちがって、自分で「把握しておくべき」なので、
2重インクルード防止の仕掛けはしては「いけない」のだ > 自作ヘッダー
0643デフォルトの名無しさんNGNG
つまらん
0644デフォルトの名無しさんNGNG
>>642
自分が何を使っているかは把握すべきだね
その「何」にも責任範囲があって
そこに立ち入るのは「キャー」なんだよ
0645デフォルトの名無しさんNGNG
質問です。某処理系で、以下のマクロ(シフトJISの1バイトめを判定)を、
#define iskanji(c)(0x81 <= (c) && (c) <= 0x9f || 0xe0 <= (c) && (c) <= 0xfc)

より伝統的な以下のに書き換えたのですが、
#define iskanji(c) ((unsigned int)((c) ^ 0x20) - 0xa1 < 0x3c)

数倍以上速くなりました。

そこで、以下の「シフトJISの2バイトめとしてありうる値かどうか」を判断するマクロを
#define foo(c)(0x40 <= (c) && (c) <= 0x7e || 0x80 <= (c) && (c) <= 0xfc)
同様にもっと速いコードに書き換えられないでしょうか?



0646デフォルトの名無しさんNGNG
テーブル使え
0647デフォルトの名無しさんNGNG
> そこに立ち入るのは「キャー」なんだよ

ふつうcharって読むだろ。キャーとはいわん
0648デフォルトの名無しさんNGNG
あ、メモリーも節約したいです(組み込み系なので) > テーブル使え

0649デフォルトの名無しさんNGNG
ここに居ると頭悪くなりそう・・・
0650デフォルトの名無しさんNGNG
>>647
つきあってやんねー
ばいばい
0651デフォルトの名無しさんNGNG
なら4で割ってテーブルサイズを32バイトに縮小
0652デフォルトの名無しさんNGNG
64か・・・
0653デフォルトの名無しさんNGNG
表ひかないでそこそこ速くする方法ない?
0654デフォルトの名無しさんNGNG
アセンブラで記述する
0655デフォルトの名無しさんNGNG
おいおいアセンブラでやれば速くなるとでも思ってるのか?
0656デフォルトの名無しさんNGNG
>>655
DC X'83
0657デフォルトの名無しさんNGNG
>>633
いちいちそんなん気にしてられるか。
0658デフォルトの名無しさんNGNG
>>648
ハードで実装すればいいのでは?
0659デフォルトの名無しさんNGNG
>>657
ttp://nssearch.hp.infoseek.co.jp/clang/1084749585.html
とりあえずここの>>1に書いてあるNGワード、登録しとけ。
0660デフォルトの名無しさんNGNG
(0x40<=(c) && (c)<=0xfc && (c)!=0x7f)
0661デフォルトの名無しさんNGNG
char a[3][3];
で宣言して
a++;
ってしたらアドレスが3つすすんだんだけど常識?
0662デフォルトの名無しさんNGNG
> いちいちそんなん気にしてられるか。

ようするに把握したくないってことですね?
そんなコードがろくなもんであるわけがない。
0663デフォルトの名無しさんNGNG
>>661

char a[4][5]; だといくつすすむかわかるよね?
0664最強 ◆lJJjsLsZzw NGNG
>>663
1つ。間違いない。
0665デフォルトの名無しさんNGNG
>>660
比較が3つだけになりちょっと速くんるのですが、20%ぐらいしか速くなりませんでした。
数倍速くしたいのです。(で、表をひかずに実現したい)
0666デフォルトの名無しさんNGNG
釣りから釣りへと...。
0667デフォルトの名無しさんNGNG
>>663
5
a[1][0] - a[0][0]
0668デフォルトの名無しさんNGNG
#define foo(c)((BYTE)(c-0x40) <= (0x7e-0x40)) || BYTE(c-0x80) <= 0xfc-0x80 )
0669デフォルトの名無しさんNGNG
それだと判定できないのでは?
0670デフォルトの名無しさんNGNG
もし
#define foo(c) ((unsigned int)((c) - 0x40) <= 0x3e || (unsigned int)((c) - 0x80) <= 0x7d)
だとしても、比較2回に、論理演算1回あるので、速くはならんだろう。
0671デフォルトの名無しさんNGNG
>>665
ハードウェアを取り替えてください。
0672デフォルトの名無しさんNGNG
推奨NGワード「ボケ」「ぼけ」「空白あけろ」「空白あけるな」
0673デフォルトの名無しさんNGNG
>>665
>#define iskanji(c) ((unsigned int)((c) ^ 0x20) - 0xa1 < 0x3c)
ってマクロのキモは
「0x81〜0x9f と 0xe0〜0xfc の2つの領域を ^0x20 で一つにまとめる」って
ところにあるんで、同じようには出来ないんじゃないか?

  #define foo(c)((unsigned)(c) - 0x40 <= 0xbc && (c) != 0x7f)

つか、速くなるかどうかはアーキテクチャにブリブリ依存してる希ガス。
0674デフォルトの名無しさんNGNG
むしろ、組み込み系で日本語文字コードを扱う事自体が信じられない訳だが…
0675デフォルトの名無しさんNGNG
>>674
ハァ?無知は黙ってたら?
0676デフォルトの名無しさんNGNG
>>662
把握しても嬉しいこと無いし。
0677デフォルトの名無しさんNGNG
>>633
情報隠蔽って考え方に乗り遅れた老朽部品だな
つーか30年前でさえこんな概念はガイシュツに過ぎなかったわけだがw
0678デフォルトの名無しさんNGNG
釣られ過ぎ
0679デフォルトの名無しさんNGNG
std::cout << "Hello World!\n";

今日覚えたよ!!
0680デフォルトの名無しさんNGNG
>>679を迎えに来ました
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
0681デフォルトの名無しさんNGNG
よく __cdecl とか __stdcall とか見るけど、これらは具体的に
何をするんですか?
shared object を作るコンパイラ/リンカにヒントを与えるとか
聞きますが具体的な意味がわかりません。
0682デフォルトの名無しさんNGNG
まずググれよ
0683デフォルトの名無しさんNGNG
関数を呼び出すときの規約。
引数を左右どちらから渡すとか、
引数を受け渡しに使った変数領域を
呼び出し側、関数側のどちらがクリア
するのかetcのとりきめ。
Win32APIは__stdcall(標準呼出 standard call の略)、
c言語のデフォルトは__cdecl(c default call の略)、
になっている。他にもスタックを解さずにレジスタ経由で
呼び出す__fastcall(文字通り早い、そのかわり処理系
依存になる)とかがある。MSDNをもっていたら詳しく
書いてあるけど、ググッても結構ヒットするはず。
0684630NGNG
>>633
性格の悪いヤツだなー。しかも視野が狭いと見える。
チームで大きいアプリ作る場合、多重インクルードガードしとくのが安心だろう。
もし釣りだとしても低質すぎ。
0685デフォルトの名無しさんNGNG
>>684
釣られるなよ。
「安心」じゃない、「絶対」だろ。
a.hに依存する b.h と c.h って、有りうるだろ?
0686デフォルトの名無しさんNGNG
プログラムはじめたばっかの洩れには、多重インクルードガード(って名前なの?)って
「いりそうなインクルードファイル全部書いとけっ」
ってことになってしまって、不要なのまで入ってしまいそうなんだけど・・。

「不要な物の1つや2つ、インクルードファイルの依存で躓くよりいい」
ってことでしか?
0687デフォルトの名無しさんNGNG
>>685
ヘッダの中で他のヘッダをincludeしてたりする場合もあるんで、
人間がinclude順をあれこれ気にするよりは、
機械的に二重 include防止しといた方がいいという話。

普通に書いてれば、必要ないヘッダファイル includeしてても影響は無いし。
(気持ち悪いんで、大抵は必要最小限のものにしぼるけど)
0688デフォルトの名無しさんNGNG
includeだのプロトタイプだのは結局コンパイラを1パスにするための妥協なんだよ
多少の不便を乗り越えて本来の意味に沿うように使いこなすのは
機械相手の仕事を選んだ不幸な(本人は幸福?)人々の宿命と割り切れや
0689687NGNG
すまん。番号間違えた。
>>686へのレスだ。
0690デフォルトの名無しさんNGNG
IEEE754の浮動小数点数同士の加減乗除のプログラムを教えてください
入力は二つです。10進数で入力しますy。それを2進に変換して浮動小数点数にして、演算をします。。
出力結果も10進で表示します。
0691デフォルトの名無しさんNGNG
マルチの >690 さんに質問。自分が書いている内容を理解できてますか?
0692デフォルトの名無しさんNGNG
>>690
入力文字列をatofで doubleあたりに変換したものを使って演算すれば上記の
条件は満たせるような気がするが。
0693デフォルトの名無しさんNGNG
いまどき組み込み系でもUTF-8ですよ。SJISなんかどうってことないぐらい。
しかもSJIS<->UTF-8ってのは巨大な表をひかなきゃいけないのですが、
そんなのも平気ではいってるぐらいです > いまどきのくみこみけい
0694デフォルトの名無しさんNGNG
> 性格の悪いヤツだなー。しかも視野が狭いと見える。
> チームで大きいアプリ作る場合、多重インクルードガードしとくのが安心だろう。

いいや、逆にそんなことをするチームってのはろくなもんじゃない。
0695デフォルトの名無しさんNGNG
> ヘッダの中で他のヘッダをincludeしてたりする場合もあるんで、
> 人間がinclude順をあれこれ気にするよりは、
> 機械的に二重 include防止しといた方がいいという話。

だから、それがすでにだめだめ
0696デフォルトの名無しさんNGNG
つぅか酌み混みで2バイト使うなよな…
0697デフォルトの名無しさんNGNG
ここの人は「*」をスターと読んだら突っ込み入りますか?
また「&」をアンドと読んだら?
0698デフォルトの名無しさんNGNG
たまに「管理が繁雑になるから」という理由でヘッダ中での includeが禁止されてるプロジェクトもあるよな。
0699デフォルトの名無しさんNGNG
それのほうがまだまし
0700デフォルトの名無しさんNGNG
*はアスタリスク
&はアンパーサ
^はサーカムフレックス

これであってる?
0701デフォルトの名無しさんNGNG
& → アンパサンド → アンド・パース・アンド → アンドはそれ自体でアンドを表す

アンドと読んでも問題ない。
むしろアンパサンドと読むと
'A' をエーパーセーと読むみたいな感じ。
0702デフォルトの名無しさんNGNG
アスタリスクはXに横棒。
縦棒じゃない。
0703デフォルトの名無しさんNGNG
FAQだな。しかも検索すりゃ山ほど出てくるのに。
0704デフォルトの名無しさんNGNG
&(アンパンサンド)
腹減った。
0705デフォルトの名無しさんNGNG
('A')まんどくせー
0706デフォルトの名無しさんNGNG
>>694-695
何がどうダメダメなのか書けよ。
どうせダメだからダメとか子供みたいなこと言うんだろうなぁ。


>>694-695 ↓
    〃〃∩  _, ,_
     ⊂⌒( `Д´) < ヤダヤダ!インクルードガードしちゃヤダ!
       `ヽ_つ ⊂ノ
              ジタバタ
0707デフォルトの名無しさんNGNG
自作ヘッダ同士であまり複雑に依存関係があるのはどうかと思うよ。
0708デフォルトの名無しさんNGNG
> 何がどうダメダメなのか書けよ

なにこどもみたいなこといってるんだ...なんでいけないのかさえわからないようなやつは
だめだめにきまってるだろ ぼけ
0709デフォルトの名無しさんNGNG
>>707
だね。
多重インクルードのカード処理が必要ってことは、すでに依存関係を把握できてない
ってことだし。
0710デフォルトの名無しさんNGNG
直接発生する実害が書けないなら芯でいいよ
0711デフォルトの名無しさんNGNG
ユーザに依存関係意識させんなよ
0712デフォルトの名無しさんNGNG
>>711
それは標準インクルードに関してだろ?
自分で作成したインクルード依存関係くらい
ちゃんと把握して作成しなきゃダメダメだろ!?
っていってるんじゃねぇのんか?
0713デフォルトの名無しさんNGNG
直接発生する実害が書けないなら芯でいいよ
0714デフォルトの名無しさんNGNG
>>712
明日の自分は他人
0715デフォルトの名無しさんNGNG
アンチインクルードガードは

/* defs.h */
/* すべてのマクロを定義 */
...

/* funcs.h */
/* すべての関数のプロトタイプ宣言 */
...

とかやってそうでキモイ
0716デフォルトの名無しさんNGNG
>>712
チームで開発するときも、それ言うんですか?
「俺の hoge.h は内部で a.h とプロジェクト共通の def.h を使ってる。
 ガードしてないから自分で気を付けろ!」って?

hoge.h 使おうと思ってた人は、自分の書いたソースから
a.h と def.h を外さないといけなくなるわけですね?

で、ある時 hoge.h に更に別のヘッダを加えた場合、
「b.h も使う事にした。お前ら b.h は外せ」って言うんですね?

まー好きにしてもらっていいですけどね。
0717デフォルトの名無しさんNGNG
>>715
気のせいです。
ガードしていようといまいと、莫迦はそういう使い方をします。
0718デフォルトの名無しさんNGNG
>>716
プロジェクト参加したてのときそういう目にあったことがある。
先輩に「インクルードガードしてください」って言ったら
「何それ」
って言われた。

オレ: 「#ifndef... /* 中略 */ ってやつです」
先輩: 「何の意味があるの?」

数日後に一部のヘッダファイルがインクルードガードされてた。
0719デフォルトの名無しさんNGNG
自分は大丈夫でも、バカは絶対いるんだからガードしとけ。
0720デフォルトの名無しさんNGNG
やっていないと馬鹿にされるから一応やっている。
0721デフォルトの名無しさんNGNG
>>716
得意な料理はスパゲティですか?(プ
0722デフォルトの名無しさんNGNG
>>716
こういうヤツに限って
goto絶対使うなとか不要とか
自慢げに言ってそうだよな(w
0723デフォルトの名無しさんNGNG
>>721
ヒキコモリ自称プログラマは気楽でいいですね。
100人以上とかで開発したことなんてないでしょうから。
0724100人以上とかで開発したことなんてないでしょうから。NGNG
100人以上とかで開発したことなんてないでしょうから。
0725デフォルトの名無しさんNGNG
>>723
自分達が無計画なのを棚にあげるのですね?
解るよ、設計ミスしてるとつらいよねw
0726デフォルトの名無しさんNGNG
安置は技術的な話を一行も書いてないのになんで放置できないんだお前らは。
0727デフォルトの名無しさんNGNG
>>721
妄想が禿しいようですね。
ヘッダはモジュール (クラスと言い換えてもいいですが) 毎に
分けるのがふつうじゃないですか?
というか、今そんな話はしてないんですが。

>>722
妄想が禿しいようですね。
gotoを使ってはいけない、というのは莫迦の台詞ですよ。
というか、今そんな話はしてないんですが。
0728デフォルトの名無しさんNGNG
100人以上とかで開発したことなんてないでしょうから。
0729デフォルトの名無しさんNGNG
友達100人できるかな、とかそういったレヴェルでしょうか。
0730デフォルトの名無しさんNGNG
>>726
みんな暇なんだよ。
0731デフォルトの名無しさんNGNG
仕事しろ!(上司)
0732デフォルトの名無しさんNGNG
仕事くれ!(無職にちゃんねらー)
0733デフォルトの名無しさんNGNG
違う会社の上司に言われてもな
0734デフォルトの名無しさんNGNG
近所の婆に注意されてもな
0735緊急アンケートNGNG
Q.プロジェクトのメンバにしたくないプログラマは?

・アンチインクルードガード  1人
・2ちゃんねら          1人
0736インクルードガードを拒絶することの利点を述べよNGNG
さあ。
0737デフォルトの名無しさんNGNG
>>735
>>735
0738デフォルトの名無しさんNGNG
ディスクが節約できる。
0739デフォルトの名無しさんNGNG
おまいら冷静に考えてみれ。
自分で依存関係管理してガードせずに書こうが、
ガードしてお気軽しようが、どっちでもいいじゃねぇか。
議論(とても議論とはいえないが)することもねぇ、
好きにしろってことだ。
0740デフォルトの名無しさんNGNG
すいません質問です。
関数を
-------------------------
fanc(x,y)
int x;
char y;
{
int i,j;
・・・・・・
-------------------------
って書く時、
fanc()を事前に宣言しておきたいんですが
どうやって書けばよいですか?
あと、うちではCygwin使うと
この書き方しか受付けないんですが
Unix上だとこうしか書けないんでしょうか?
返り値の設定のしかたもいまいち分からないので
書きづらくて困ってます。
よろしくお願いします。
0741デフォルトの名無しさんNGNG
>>740
int func(int x, char y);
つかまともな本買え
0742デフォルトの名無しさんNGNG
ネタとしかおもえん。
0743デフォルトの名無しさんNGNG
萌え萌えウニックスでム板住人のオススメって何?
0744デフォルトの名無しさんNGNG
ネタだろ。今時古い形式でコードを書く利点なんてないし。
0745デフォルトの名無しさんNGNG
>>740は骨董ソースのメンテを押し付けられたド素人新入社員
0746デフォルトの名無しさんNGNG
うわっ古い思い出やなー
0747740NGNG
すいませんネタじゃないんですが
どこらへんがネタっぽいんでしょうか・・・?
0748デフォルトの名無しさんNGNG
あと、うちではCygwin使うと
この書き方しか受付けないんですが
0749デフォルトの名無しさんNGNG
関数名がfancなとことかも釣りなんだろ。
そんな餌で(
0750デフォルトの名無しさんNGNG
>>740
ANSI Cなコンパイラ使えよ。
コンパイラによってはANSI Cオプションがいる。
0751デフォルトの名無しさんNGNG
#include<stdio.h>
#include<stdlib.h>
void main(void){
char *str;
str=malloc(sizeof(char)*20);
scanf("%s",str);
printf("%s",str);
free(str);
}
参考書のサンプルプログラムをDLしてコンパイルしたら型がなんとかって
エラーがでます。
本事態がまちがってるのに、どこをどうなおしたいいかわかりません
もしかして、この本つくったやつしょぼいの?
ぜひどこをなおしたらいいかおしえてください
0752デフォルトの名無しさんNGNG
cygwin の gcc が ANSI スタイルを受け付けないはずないよなー
0753デフォルトの名無しさんNGNG
>>751
ここはC言語スレでお前が買ったのはCの参考書なのに
拡張子.cppとかにしてたりするんじゃないかとか。

mainの戻り値の型なんて餌に俺さまがクマー
0754デフォルトの名無しさんNGNG
クマの元ネタってなんなの?
0755デフォルトの名無しさんNGNG
先日、谷尻かおり氏のC言語によるはじめてのプログラミングレッスン1.
という本を購入したので、C言語を勉強しようと思っているのですが
コンパイラは何がオススメですか?
755はプログラムに関してはずぶの素人で、使用するマシンのOSはXPです。
アドバイスいただければ幸い。
0756デフォルトの名無しさんNGNG
> コンパイラを探しているなら >>2-13 を。
0757デフォルトの名無しさんNGNG
>>754
ダディクールの元ネタ探してたとき、クマーのことも
いっしょに書かれてたページがあったんで貼っとく。

http://www.google.co.jp/search?q=cache:gwonY-qou7QJ:www5a.biglobe.ne.jp/~shinotan/sonRO.htm+%E3%83%80%E3%83%87%E3%82%A3%E3%83%BC%E3%82%AF%E3%83%BC%E3%83%AB&hl=ja
0758デフォルトの名無しさんNGNG
>>757 サンクス
でもできれば、「そんな餌で俺様がクマー」だっけ?
それのルーツも知りたいが・・・板&スレ違いだった。スマソ・・・
0759デフォルトの名無しさんNGNG
このスレ疑心暗鬼が激しいですね。
0760デフォルトの名無しさんNGNG
#include "stdio.h"

int main(){

int i;
for(i=0;i<5;i++) printf("unko\n");
printf("\0x1b [2J");

return 0;
}

エスケープコードってXPじゃ使えなくなってるの?
98だとちゃんと↑の実行すると画面が消えてくれるんだけど・・・.
0761デフォルトの名無しさんNGNG
"XP エスケープシーケンス"とかで検索かけてみ。
0762デフォルトの名無しさんNGNG
わらわら出てきたけど解決できないっす
よくあるのがCONFIG.NTに

device=%SystemRoot%\system32\ANSI.SYS
dosonly

ってのを追加させて再起動したけど効果現れず・・・.
同じ症状で解決する人と解決しない人がいるみたいだけど
なんか他に解決方法あるぽ?
0763デフォルトの名無しさんNGNG
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
0764デフォルトの名無しさんNGNG
>>762
コンソールAPIを呼び出すとNT, 9xの両方で動くけど、だるいかもしれない。
http://www.kumei.jp/c_lang/intro/no_58.htm
http://msdn.microsoft.com/library/en-us/dllproc/base/console_functions.asp
0765デフォルトの名無しさんNGNG
>>764
あーいやーそうもゴリゴリくるとちょいと困ってしまいます.
cout出すのWinじゃないのよね.
Winはシステムから送られてくるデータを表示するだけなのねん

何が言いたいかってーとあるマイコンがあります.
その中のプログラム中にcoutを書くとtelnetで繋がれたコマンドプロンプト上に
文字列が排出されると・・・.そこでエスケー(ry使うとかっこいいんじゃね?と
思ってやってるわけだが.うーむこまった.ちなみにマイコンはRISCでこれが
非常に(オイラが)混乱している原因
0766デフォルトの名無しさんNGNG
TeraTermとかは色出せた気がするけど。
0767デフォルトの名無しさんNGNG
ああ、でもclearが効いたかどうかはわからんな。
0768760NGNG
なんかやめときます.
これ以上はシステム公開せにゃならんっぽいし
スレ汚しスマソ
0769デフォルトの名無しさんNGNG
C言語の問題じゃないじゃん。
0770デフォルトの名無しさんNGNG
>>687
二重インクルードガードも必要だが
不要インクルードガードも本当は欲しいところ

俺は>>695とは二重インクルードガードについて主張が対立しているが

>人間がinclude順をあれこれ気にするよりは、
>機械的に二重 include防止しといた方がいいという話。

こういう情報隠蔽とアフォ隠匿の混同については>>695と同意見だ
0771デフォルトの名無しさんNGNG
しつけーな
0772デフォルトの名無しさんNGNG
>>760
うそつけ。
98でそれやってないだろ?
0773デフォルトの名無しさんNGNG
TeraTermならVT100とかなんたらをエミュレートしてるから
ESC[2Jでもなんでも対応してるだろ?
だから出力先をTeraTermにすればいいんじゃないの?
0774デフォルトの名無しさんNGNG
bが全角と言うオチとみた!
0775デフォルトの名無しさんNGNG
現在、Windowsで既存のDLLのラッパーDLLを作っています。
手を加える必要の無い関数についてはfunction forwarding(?)
で元の関数に転送してやる事が出来るそうですが、このやり方が
わかりません。
誰かご存知の方はいませんか?
0776デフォルトの名無しさんNGNG
>>775
スレ違いです。邪魔。
0777デフォルトの名無しさんNGNG
777GET
>>776
お前の方が邪魔。このスレから消えてください
0778デフォルトの名無しさんNGNG
まぁスレ違いだけどな。
0779775NGNG
すみませんでした。
VisualC++系のスレならいいんでしょうかねえ・・
0780デフォルトの名無しさんNGNG
>>779
だめ
0781775NGNG
_| ̄|○
0782デフォルトの名無しさんNGNG
PC一般で聞いてきてこちらへ誘導してくれたので、お願い致します・・・
Borland C++ Compiler をDLし、インストしました。が、bcc32を認識
してくれないのです。
ttp://www.setsunan.ac.jp/~center/kyositu/freec/borland.html
一応自分でもできるとは思ったんですが、念には念を押してここのサイト様
のとおりにやってみたところ、認識してくれませんでした。
OSはXPです。環境変数もパスも間違ってはいない(と思ってる)のですが・・。
他に必要な情報あったらご指摘お願いします。早くC言語勉強したいよぅ
0783デフォルトの名無しさんNGNG
> チームで開発するときも、それ言うんですか?

当然です。最初から「収拾つかない事態」になるようなまねをするやつは
チームで開発する資格ない。
まあ、おまえみたいなやつは、うちのチームいれないからいいが。
0784デフォルトの名無しさんNGNG
認識ってなんだ。エラーメッセージは?
0785デフォルトの名無しさんNGNG
> 「俺の hoge.h は内部で a.h とプロジェクト共通の def.h を使ってる。

それがすでにだめ。
0786デフォルトの名無しさんNGNG
>>760

"\0x1b [2J"
↓
'\0', 'x', '1', 'b', ' ', '[', '2', 'J', '\0'

ちょと面白いね。
printfでは何も出力しないわけだね。

0787デフォルトの名無しさんNGNG
低水準出力関数(openなど)と、高水準出力関数(fopenなど)は、
主にどのような違いがあり、どのような場面で使い分ければいいのでしょうか?
0788デフォルトの名無しさんNGNG
>>784 あう 書き方が悪かったですね 申し訳ない
'bcc32'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはパッチ ファイルとして認識されていません。
って出るんです。ということは、Pathが問題なのかな?と思い、一応確認
してみたところ、ちゃんと書いてある通りにしてありますし・・・。
0789デフォルトの名無しさんNGNG
>>782
「インスト」って、一般的には
「インストラクション」の略だよね。
インストカード、とか。
で、bccをインストしたの?
どうやって?
0790デフォルトの名無しさんNGNG
良スレの予感
0791デフォルトの名無しさんNGNG
>>789
> 「インスト」って、一般的には
> 「インストラクション」の略だよね。

はつみみです。
0792デフォルトの名無しさんNGNG
×インスト
○インスコ
0793デフォルトの名無しさんNGNG
うちのプロジェクトはコーダーだけで100人超です。
間接要員や管理要員もいれれば200人近くです。
うちのユニットはインクルードガードさせてません。(むしろ「しないように」ルール化)

ヘッダーファイルはべたに(1次に)*.cからだけインクルードされます。
依存関係があるものは、依存するものを先にインクルードすればよいだけです。
依存関係を書き出し(aはbとcに依存、bはdとeに依存...のように)、
それを『とぽろじかるそーと』するだけでinclude順は簡単に決まります。

以前、ひどいユニットのインクルード順をきめてあげようと、そこの
ソースのinclude依存関係をtsortコマンドに食わせたら「循環参照があります」エラー ...
すごい。
0794デフォルトの名無しさんNGNG
勝手にソース書き換えるのか。
すげー職場だな。
0795デフォルトの名無しさんNGNG
>>787
使い分ける必要はない。
お前は標準ライブラリの方(高水準出力関数)だけを使え。
それとfopenのどこが出力関数だよ?
0796デフォルトの名無しさんNGNG
そんなこんなで、うちのunitは、一番複雑な部分にもかかわらず,
バグ発生率は一番低く、同一拠点では、全員がちゃんと20:00前に帰れる唯一のunitです。
0797デフォルトの名無しさんNGNG
>>788
思いっきりパス通ってないよ。
とりあえず
c:\YourPath\bcc32.exe
とかフルパス指定で起動するかやってみたら。
それで成功したらシステムエディットボックスの内容メモ帳にコピペして間違いを探す。
0798デフォルトの名無しさんNGNG
> scanf("%s",str);
> printf("%s",str);
> free(str);
> }
> 参考書のサンプルプログラムを

scanf....つかうなよぼけ。っていうかー
その前にまずその「参考書」の名前を言え!
本の名前を言えば、
おしえてやるよ!
0799782NGNG
インストールはインスコと言うのですか・・・。成る程ひとつ勉強
させていただきました。インストールの事でございます。
ちなみに、うちのPCは兄貴と兼用で、兄貴はPerl?を勉強してる
のですが、それもコマンドプロンプト使いますよね?それとは
関係ないのかなーとか・・・。
0800デフォルトの名無しさんNGNG
>>787
fopenは高水準でも低水準でもない。
ISOで規定された唯一のファイル処理系だ。

あなたの言う「低水準関数」とやらは、おそらく(故意に白々しい言い方)
その特定の実行環境で定義されているローカルなものだろう。

ISO規格で抽象化されている機能だけで足りることはfopen、
そうでない処理系独自の機能が必要なら「低水準関数」と
使い分ければよい。
0801デフォルトの名無しさんNGNG
>>788

DOSKEY BCC32="DEL *.*"
このコマンドを実行すれば使えるようになるよ。

0802デフォルトの名無しさんNGNG
>>796
ヘッダのインクルードごときでバグが出たり出なかったりというすごい
状態なら、一から設計しなおしたほうがいいと思う。
0803デフォルトの名無しさんNGNG
>scanf....つかうなよぼけ。っていうかー

おまえが氏ね
0804デフォルトの名無しさんNGNG
int main()
{
  int i;
  for (i = 0; i < 5; i++)
    printf("unko\n");
  printf("\x1b[2J");
  return 0;
}

こう書き直して、nnansi.sysでちゃんとうまくいったよ。

ようはちゃんと空白あけないからいけない!
0805デフォルトの名無しさんNGNG
>>740
extern fanc();
0806デフォルトの名無しさんNGNG
> ヘッダのインクルードごときでバグが出たり出なかったりという

なんてぼけなこと言うやつがバグいれるんだな。実際。
0807デフォルトの名無しさんNGNG
>>803

やーい > scanf大好きぼけ
0808デフォルトの名無しさんNGNG
>>799
インスコール(Inscall)ですよ。
0809デフォルトの名無しさんNGNG
いま、ちょうど、じょんすこのCDを聞いてます。
0810デフォルトの名無しさんNGNG
>>807
おまえ頭おかしそうだな
関数に好きも嫌いもねえよ
仕様に着目して使えるときは使ってる
それだけだ
0811デフォルトの名無しさんNGNG
> 関数に好きも嫌いもねえよ

とかいいつつscanfのことをいわれるといてもたってもいられない症候群では? ;)
「お、おれのscanfをばかにするな!」

依存症だね。
0812デフォルトの名無しさんNGNG
「scanfを使うなって言うな!」
「それじゃあおれの使える関数2つのうち50%を否定されてしまい、おれの存在価値がなくなる!」
という心配であばれてるんでしょ? ;) > scanfを悪くいわれるとこまるやつ ;-)
0813デフォルトの名無しさんNGNG
>>811
状況を把握できずに、つねに原則論で動く傾向があるということは分かった。
0814デフォルトの名無しさんNGNG
ぜんぜん脈絡がないセリフを貼り付けても無駄。
0815デフォルトの名無しさんNGNG
>>813
いくら図星をいわれて反論ができないからといって、
「これを言えば反撃になる」と思い込んでいる万能のセリフをこぴぺしても意味ないよ!
0816デフォルトの名無しさんNGNG
あ、先に言われてた...
0817デフォルトの名無しさんNGNG
で、なんでscanf使っちゃいけないの?
vfscanfもだめ?
0818デフォルトの名無しさんNGNG
とりあえず楽だからね。
別パーサ用意する必要ないし。
それで十分な状況ならいいんじゃないの?
0819デフォルトの名無しさんNGNG
女性向きのCコンパイラーのおすすめを教えてください。
0820デフォルトの名無しさんNGNG
> 別パーサ用意する必要ないし

っていうか、scanfのパーサー不便じゃろが!
sscanfのほうがちょっとはましだが、それでもやっぱりだめ。
0821デフォルトの名無しさんNGNG
>>812
は? 誰か困ったのか??
おまえ本当にちょっと精神科で診てもらえ
0822デフォルトの名無しさんNGNG
>>820
だから「それで十分な状況」って書いてるじゃん。
常にscanf系使えと言ってるわけじゃないよ。
0823デフォルトの名無しさんNGNG
scanf使うなっていうやつはまあ普通
sscanf使うなっていうやつはアフォ
0824デフォルトの名無しさんNGNG
>>823
アフォ自身の判断基準を教えてくれてありがとう
何の役にも立たんがw
0825デフォルトの名無しさんNGNG
>>823
なんで?
0826782NGNG
ぬお!なんだか突然pcc32で起動しはじめました。
なんだかよう分からんのですけど・・・orz
とりあえず様子見してみます。ありがとうございまして。
0827787NGNG
>>795
>>800
ありがとうございました。低水準入出力関数の間違いでした(汗。
入門書の場合、低水準入出力関数しか書いていない時があるのですけど、
やはり高水準入出力関数を使った方がいいのですね!
0828デフォルトの名無しさんNGNG
>>827
んなこたぁない
0829デフォルトの名無しさんNGNG
>>827
>入門書の場合、低水準入出力関数しか書いていない時があるのですけど、

本当か? 釣りか?
0830デフォルトの名無しさんNGNG
低水準入出力関数しか書いてない入門書には
UNIXとかへんな名前がついていました。
VCの事もかいてないし、古くて役にたたないんでしょうか?
0831デフォルトの名無しさんNGNG
釣りか
ばいばい
0832デフォルトの名無しさんNGNG
釣り確定しますた
0833デフォルトの名無しさんNGNG
>>830
今のあなたよりも価値はある本ですよ。
0834787NGNG
えっと……椋田 みのる(←漢字がわからなかった)さんの「はじめてのC」を買って見たのですが、
明らかにコードが初心者向けじゃありませんよね?簡潔に書いてあり、
良書だとは思うのですけど、みなさんはどう思っているのでしょうか?
0835デフォルトの名無しさんNGNG
>>830
役に立たないですね。
0836デフォルトの名無しさんNGNG
>>834
つまんね
本ではなくお前が
0837デフォルトの名無しさんNGNG
>>793
超ネタくさいなあ。
カプセル化の反対を地でいってるのね。

途中のヘッダファイルの変更で新たに依存が発生した場合
大量のモジュールをいじらなきゃならなくなるね。
工数計算は必要以上にでかくなり、また
そのコストを避けようとする力が働き、コードが硬直化しやすそうだ。
0838デフォルトの名無しさんNGNG
>>837
>超ネタくさいなあ。

超禿同
0839838NGNG
よって>>837の3行目以後(レスアンカも数える)もネタ臭い
つーか(・∀・)ジサクジエーン
0840デフォルトの名無しさんNGNG
> 途中のヘッダファイルの変更で新たに依存が発生した場合

それがそもそもだめ
0841デフォルトの名無しさんNGNG
さて、洗い物して風呂入って寝るとしようか
明日は大事な勝負の日
0842デフォルトの名無しさんNGNG
>>840
一度作ったものは改良もできないのか
0843デフォルトの名無しさんNGNG
> 一度作ったものは改良もできないのか

改良する気があるなら、いじるファイルが何百なってでもやるべし。
そもそもそんなにあとでいじらなきゃいけなくなるってことは
設計ミスなわけだから。
逆に、あとでそれだけ変更がでるようなことを最初によく考えずに実装するのがぼけ
それをごまかすために、ヘッダーのなかでインクルードするんだったら ぼけ
0844デフォルトの名無しさんNGNG
恐竜のようなシステム開発で、いまどきの開発には合わないと思った。
0845デフォルトの名無しさんNGNG
バグの発生率とか勤務時間を引き合いに出すなら、
現プロジェクトで一番成績のいい私がインクルードガードを提唱しているのだが。
この10年間で、やっと他のチームが私に追いついてきたと言うのに。
#なんて書くと、屑が屑以下と仕事しているとか言われるんだろうな。
0846デフォルトの名無しさんNGNG
設計の善し悪しが全てを分ける。
設計が良ければインクルードガードを使う必要性も出てこない。




と言いたいんだろうな。
0847デフォルトの名無しさんNGNG
ウチのプロジェクトextern使いまくりで
インクルードガード必要ないYO!
0848デフォルトの名無しさんNGNG
SLS(Source-level Link System)について語ろうよ。
0849デフォルトの名無しさんNGNG
で、インクルードガードってナニ?
0850デフォルトの名無しさんNGNG
>>849
#ifndef _XXX_H_
#define _xXX_H_

#endif
0851デフォルトの名無しさんNGNG
笑えないよボケ
0852初心者NGNG
C言語でのプログラムでscanf文で%dとしてプログラムを
組んだのですがアルファベッドを入力すると無限ループに
なってしまいます。
%sにすると文字列認識してしまいます、どうしたらいいか
教えてください。
0853デフォルトの名無しさんNGNG
>>852
氏ね
0854デフォルトの名無しさんNGNG
>>852
>scanf文
ワラタ
0855デフォルトの名無しさんNGNG
> 現プロジェクトで一番成績のいい私がインクルードガードを提唱しているのだが。

ああ、そのプロジェクト自体がだめだめなんだろうなあ。
0856デフォルトの名無しさんNGNG
> C言語でのプログラムでscanf文で%dとしてプログラムを組んだのですが

使うなよ ぼけ
0857デフォルトの名無しさんNGNG
>>852
#include <stdio.h>

int main(){
int n = 0;
for(;;){
printf("Input > ");
if(!scanf("%d", &n)){
fflush(stdin);
n = 0;
}
printf("Result > %d\n", n);
}
return 0;
}

・処理系依存
・scanfはできれば使わない方が良い
0858デフォルトの名無しさんNGNG

 s c a n f 避 け る 奴 は 軽 A T 車 乗 っ て る ド 素 人

0859デフォルトの名無しさんNGNG
>fflush(stdin);
うーん・・
0860デフォルトの名無しさんNGNG
>>857
>>852は無限ループになって困っていると言っているのに、なぜわざと無限ループにするのか。
0861デフォルトの名無しさんNGNG
> s c a n f 避 け る 奴 は 軽 A T 車 乗 っ て る ド 素 人

逆だろ...
0862デフォルトの名無しさんNGNG
ボケにボケで返す
全く新しいタイプの笑い。
0863デフォルトの名無しさんNGNG
どこが新しいのか
0864デフォルトの名無しさんNGNG
>>855
いやいや、お前がダメダメなんだよ。
0865デフォルトの名無しさんNGNG

-------------------- キリトリセン --------------------
0866デフォルトの名無しさんNGNG
─・─・─・─・─・─・─・─・─ 谷折り ─・─・─・─・─・─・─・─・─
0867デフォルトの名無しさんNGNG




    のりしろ




 
0868デフォルトの名無しさんNGNG
ええいああ
0869デフォルトの名無しさんNGNG
CでPrototypeパターン適用しようとしたら、どうやってクローンを作ればいいの?
0870デフォルトの名無しさんNGNG
memcpy
0871デフォルトの名無しさんNGNG
>>852
scanf文の前に、次のprintf文を入れましょう。

  printf("アルファベッドを入力すると無限ループになってしまいます。\n");

ところで、何だかリラックスできそうでいいですね>アルファベッド
0872デフォルトの名無しさんNGNG
誰もいないな…
みんな朝鮮強盗団にくびったけ?
0873デフォルトの名無しさんNGNG
if(hoge != NULL) {}
という条件判定は
if(hoge) {}
と書いても動作しますけど、これはNULLが0ではない処理系もあるかもしれないと考えて避けるべきなのでしょうか?
0874デフォルトの名無しさんNGNG
>>873
またまた発見!

>これはNULLが0ではない処理系もあるかもしれないと

ありません。ヌルポは0です。FAQ嫁!
0875デフォルトの名無しさんNGNG
>>873
http://vision.eng.shu.ac.uk/C++/c/c-faq/cfaq5.html
ここの5.17あたり参考になるか?
0876デフォルトの名無しさんNGNG
>>874-875
ありがとうございます。
NULLはプログラマ側から見て常に0となり、非0が内部的にヌルポインタとなる環境でもコンパイラのみがそれを気にする必要がある、ということでしょうか。
0877デフォルトの名無しさんNGNG
>>875
ディレクトリ掘ったら(゜д゜)ウマー!
0878デフォルトの名無しさんNGNG
vcで作ったdllをvbで呼び出し、ソフトを作ったのですが、
フォルダが変わる度に、dllを作成し直さないと、
いけなのでしょうか?batファイルで何とかなるような
ことを聞いたのですが、何をどうしていいのかわかりません。
教えて下さい。お願いします。
0879デフォルトの名無しさんNGNG
>>876
Yes.
0880デフォルトの名無しさんNGNG
>>878
スレ違い。
どんな問題でてるんだ?VBのIDEとEXE実行は動作が違うが、確認した?
0881デフォルトの名無しさんNGNG
>>880
ご返答ありがとうございます。
現在、VBでVCのReleaseから作成した、.dllを読み込み実行して、
テキストファイルを出力しているのですが、設定でvbのexeを指定しているので、
その度に出力先を変更しています。
できたら、フォルダを変えても現在のフォルダ上に出したいのです。
0882デフォルトの名無しさんNGNG
どなたか、>>881の通訳してくれる人はいませんか。そうですか。
0883デフォルトの名無しさんNGNG
ファイルにテキストを出力していて、その出力ファイルを作るディレクトリをカレントディレクトリにしたいらしい。
ってことはなんとなくわかるが、「設定でvbのexeを指定している」が分からん。設定ってなんだ?
0884デフォルトの名無しさんNGNG
もしかして、そのdllとやらの中で、出力ディレクトリ名をハードコーディングしてたりする?
0885デフォルトの名無しさんNGNG
>>881
>設定でvbのexeを指定しているので
どこの設定だ
VBの中の設定か、VCの中の設定か、自分で作ったソフトの中の設定か、あるいはそれ以外
0886デフォルトの名無しさんNGNG
先ず日本語を勉強すべきだ。
0887デフォルトの名無しさんNGNG
>>882
VCのReleaseモードでビルドしたDLLを、
VBプログラムでロードして実行して、実行結果をテキストファイルに出力することで確認している

VBでビルド結果のexeの出力先を毎回違うフォルダに指定しているので
そのexeからカレントフォルダにファイルを作ると、exeに連動して毎回違うフォルダにファイルが作られてしまう
そうではなく、毎回同じフォルダにファイルが作られるようにしたい

これであってるか? >>881
0888デフォルトの名無しさんNGNG
説明が下手ですみません。
VCのプロジェクト-設定-デバッグ-デバックセッションの実行可能ファイル
で、VB.exeの場所を指定してます。
0889デフォルトの名無しさんNGNG
違うんです、batファイルが関係していると思うんですが。
答えてくれる人はいないですか?
0890デフォルトの名無しさんNGNG
偽者もでたところで、もう少しナニがしたいのか書くか、適切なスレに行くかしないか。
0891デフォルトの名無しさんNGNG
>>887さん
ありがとうございます。
VB側がデスクトップだったり、他のPCだったりして、
パスが変化するもので、その度に>>888のexe変更
しなくてはいけないのですか?
まだまだ勉強不足ですが、お願いします。
0892デフォルトの名無しさんNGNG
>>891
まだやってたのか
DLLをシステムディレクトリやVB側のEXEと同じディレクトリに置けばいいだけだろ
インストーラ作るとかさ
0893デフォルトの名無しさんNGNG
皆さんありがとうございました。
もう少し、勉強してから出直してきます。
また、何かありましたらお願いします^^
0894デフォルトの名無しさんNGNG
typedefに関する質問です。

typedef struct _QUEUE_DATA
{
QUEUE_DATA *nextQueue; /*★*/
char data[128];

} QUEUE_DATA;

★の行でシンボル未定義によるコンパイルエラー

エラーの理由はわかるのですが、
上記のような構造体宣言のエラーを回避する良い方法を
教えてください。

typedef宣言にせず以下の方法以外でお願いします。

struct QUEUE_DATA
{
QUEUE_DATA *nextQueue;
char data[128];

};

0895デフォルトの名無しさんNGNG
>QUEUE_DATA *nextQueue;
struct QUEUE_DATA *nextQueue;
0896デフォルトの名無しさんNGNG
DLLをオンドゥルと読むのはうちの界隈だけですか?
0897デフォルトの名無しさんNGNG
>>891
ファイル作るときフルパスにすりゃええんちゃうの?
0898デフォルトの名無しさんNGNG
>>896
君と君の脳内仲間だけです。はい次の質問どうぞ。
0899デフォルトの名無しさんNGNG
>>895さん

ごめんなさい。
したのサンプルコードが間違えているってことですよね。

(正)
struct QUEUE_DATA
{
struct QUEUE_DATA *nextQueue;
char data[128];

};

これしか方法ありませんか?
0900デフォルトの名無しさんNGNG
#include<stdio.h>

int factorial(int n){
int i,f=1;
for(i=1;i<=n;i++){
f=f*i;
}
return f;
}

int combination(int a,int b){
return (factorial(a)/factorial(a-b)/factorial(b));
}
int main()
{
int i,n,m;
printf("Input n:");
scanf("%d",&n);
printf("Input m:");
scanf("%d",&m);
printf("%dC%d = %d",n,m,combination(n,m));
return 0;
}


0901デフォルトの名無しさんNGNG
#include<stdio.h>

int factorial(int n){
int i,f=1;
for(i=1;i<=n;i++){
f=f*i;
}
return f;
}

int combination(int a,int b){
return (factorial(a)/factorial(a-b)/factorial(b));
}
int main()
{
int i,n,m;
printf("Input n:");
scanf("%d",&n);
printf("Input m:");
scanf("%d",&m);
printf("%dC%d = %d",n,m,combination(n,m));
return 0;
}

問題点がどこか分かりますか?
エラーばっかりでて困ってます。
ちなみにnCm(コンビネーション)を求めるプログラムです。


0902デフォルトの名無しさんNGNG
#include<stdio.h>

int factorial(int n){
    int i,f=1;
    for(i=1;i<=n;i++)
        f *= i;
    return f;
}

int combination(int a,int b){
    return (factorial(a)/factorial(a-b)/factorial(b));
}

int main(void) {
    int n = 10, m = 5;
    printf("%dC%d = %d",n,m,combination(n,m));
    return 0;
}
$ gcc comb.c
$ a
10C5 = 252
(´∀`)およ?
0903デフォルトの名無しさんNGNG
>>899
struct付けてればコンパイルできるんだから、それでいいだろうが
0904デフォルトの名無しさんNGNG
>>902
これをInputで入力するようにするには?
0905902NGNG
アホみたいに階乗求めるから溢れてんでしょ。
テスト用
int combination(int a,int b){
printf("%d %d %d ", factorial(a), factorial(a-b), factorial(b));
return (factorial(a)/factorial(a-b)/factorial(b));
}

$ a
Input n:20
Input m:3
-2102132736 -288522240 6 20C3 = 1
0906デフォルトの名無しさんNGNG
>>903さん
まーたしかにそうなんですけど、
struct付きでしか解決方法がないのか、
或いは他の方法があるのかが知りたいのです。
0907デフォルトの名無しさんNGNG
>>905
20C3って間違ってますよ
0908902NGNG
>>907
そりゃそうだ、つーか意図が伝わってない…。
20C3を求めようとすると、まずfactorial(a)が2432902008176640000になり、これは普通のintでは手におえない数値だからオーバーフローして
変な値(>>905で貼った-2102132736)になる。factorial(a-b)(→17)も激しくケタ溢れする。
それを防止するには巨大整数ライブラリを作って無限桁計算をするか、そもそもそう簡単に桁あふれが起こらないようにアルゴリズムを修正する必要がある。
例えば、こう。

#include<stdio.h>

long long misc1(int start, int count) {
  long long result = 1;
  while (count)
    result *= (start - --count);
  return result;
}

int combination(int n,int m) {
  return (misc1(n, m) / misc1(m, m));
}

int main(void) {
//  int n = 10, m = 5;
  int n, m;
  printf("Input: n,m ");
  scanf("%d,%d", &n, &m);
  printf("%dC%d = %d",n,m,combination(n,m));
  return 0;
}

# これでも1000000C100なんて求めようとするとお手上げ。
0909デフォルトの名無しさんNGNG
>894
typedef struct _QUEUE_DATA
{
struct _QUEUE_DATA *nextQueue; /*★*/
/*   ~    */
char data[128];
} QUEUE_DATA;
0910902NGNG
せっかくlong longで計算しててもcombination()でintに丸められたら元も子もないのでcombination()もlong longで返すようにして
printf()でもlong longとして表示したほうが良いか。%lldだっけ(コンパイラに拠る)
0911デフォルトの名無しさんNGNG
>>909さん

なるほど!早速あした仕事で使わせて頂きます。
ありがとうございました。

構造体定義しているヘッダファイル内が、
全てtypedefで定義していたので、合わせたかったのです。。
0912デフォルトの名無しさんNGNG
>>908
まだ習ってない内容が多い…
もうちょっと簡単なのは出来ませんか?
ずうずうしくて本当に申し訳ないです。
(Inputするのは一桁の数字なんで、大きい数字は考えなくてOKです)
0913902NGNG
>>912
一桁しか入れないなら君が最初に提示したソースで問題は無いはずだよ。

# Input時にスペースキーとか余計なキーを押してscanfをブッ殺さない限り
0914デフォルトの名無しさんNGNG
宿題丸投げ説
0915902NGNG
ところで最近はこういうのを高校でやるんだっけ?
0916デフォルトの名無しさんNGNG
中学生でもやる奴はやるだろ
0917デフォルトの名無しさんNGNG
高校の情報教育でやるかどうかって話じゃないの?
0918デフォルトの名無しさんNGNG
さあ。文科省に問い合わせれば?
てかそんなの関係ないだろ。
PCなんて2万円もあればとりあえずプログラム組むのに支障はないし
オープンソースにベッタリ粘着すればあとはタダで何もかも揃うし
自分でやるだろ
0919デフォルトの名無しさんNGNG
/***************/

#include<stdio.h>

int jisaku(int a){
...
}

int main(void){
...
}

/***************/

↑のようにメイン関数の前に自分で作った関数を置くときでも
関数のプロトタイプ宣言をしなきゃならんのでしょうか?
コンパイルはできるみたいだけど、
Borland C++では宣言してくださいって
メッセージがでてるんで気になったもんで(^^;
0920デフォルトの名無しさんNGNG
>>919
必要ない
0921デフォルトの名無しさんNGNG
>>919
出ねーよ。
パラメータが省略されてりゃ出るがな。
0922デフォルトの名無しさんNGNG
>>911

typedef struct QUEUE_DATA QUEUE_DATA
struct QUEUE_DATA
{
 QUEUE_DATA *nextQueue;
 char data[128];
};
0923デフォルトの名無しさんNGNG
#include <stdio.h>

__int64 Pair(int n, int r)
{
int i;
__int64 p = 1;

for(i = n; i > n - r; i--)
p = p * i;
return p;
}

__int64 Combination(int n, int r)
{
if(n < r) return 0;
return n < r * 2 ? Pair(n, n-r) / Pair(n-r, n-r) : Pair(n, n) / Pair(r, r);
}


int main(){

printf("%I64d\n", Combination(15, 12));
return 0;
}

VC++専用だけど…__int64をintにしても15C13とかなら解けます。
>>915 確かに高校で習う。というか今月習った。
0924デフォルトの名無しさんNGNG
ところでさ
インクルードガードをあえて使わないメリットって何?
0925デフォルトの名無しさんNGNG
スレで不毛な議論を続けて暇をつぶせること。
0926デフォルトの名無しさんNGNG
>>924
ディスクが節約できる。
0927デフォルトの名無しさんNGNG
>>926
使う側が多くなると逆に余分に食うけどな
0928デフォルトの名無しさんNGNG
A XOR B=(A∧B)∨(-A∧-B)を証明せよ
A XOR Bの回路をAND,OR,NOTの回路のみを使って表しなさい。

これわからないんですが、教えてダサイ
0929デフォルトの名無しさんNGNG
算数板池
0930デフォルトの名無しさんNGNG
一言質問
for,while,ifは関数ですか?
0931デフォルトの名無しさんNGNG
一言解答
ちがいます。
0932デフォルトの名無しさんNGNG
一言お礼
ありがとうございました。
0933デフォルトの名無しさんNGNG
表現形式的には関数に近いよなぁ。プロトタイプ宣言は不要だが。

for(){} とか while(){} とか if(){}とか。
void foo() とか書かなくてもいい位。似てるといえば似てる。
0934デフォルトの名無しさんNGNG
a = if b > 0 then 1 else 4;
0935デフォルトの名無しさんNGNG
>>933
だから区別の付けられないヤツが
空白開けろだの騒ぐわけだ。
0936デフォルトの名無しさんNGNG
壺<なにぃっ! 俺を踏み台にした!?

0937デフォルトの名無しさんNGNG
どういうときに空白あけりゃいいんだ?まとめサイトとかある?
0938デフォルトの名無しさんNGNG
>>937
あるわけねぇだろ、ぼけ。
好き好きでいいんだが、あまりに少数派な書き方をすれば、変態と言われるだけ。
あとは仕事の場合は、こう書けと決められている場合もある。これこそケースバイケース。
コーディングスタイルで検索しろ。
0939デフォルトの名無しさんNGNG
>>938
マジでいっているのか?
句読点の打ち方が解らない小学生みたいな奴だな。
0940デフォルトの名無しさんNGNG
PHPなんかでは標準コーディング規約でインデントのガイドラインがまとめられてるけど、Cでそれをやると
宗教論争激しいからやらないんじゃないかと
0941デフォルトの名無しさんNGNG
>937
K&Rまねとけ。それで文句を言うやつはボコってやれ。
0942デフォルトの名無しさんNGNG
ハンガリー記法好きなんだけど、最近じゃ人気ないなぁ・・・Java命名規則を覚えようかねぇ
0943デフォルトの名無しさんNGNG
K&Rを真似てvoid mainにしたら散々こき下ろされますタ。
0944デフォルトの名無しさんNGNG
括弧の内側を空けないとか、カンマの前は空けないで後ろを空けるとか、
英語の基本的なルールを判ってない香具師多過ぎ。
「括弧の内側空いてないと見難くないですか?」とか言いながら
演算子の両側を詰めるもんだから醜いったらないよ。
0945デフォルトの名無しさんNGNG
何故void main()が悪いのか未だに分からん。CRTがintであることを期待するから、なの?
0946デフォルトの名無しさんNGNG
また空白ネタかよ
お前らそれしかないんかい
0947デフォルトの名無しさんNGNG
read C99
0948デフォルトの名無しさんNGNG
>>945
CRTってなんのことだ?

void main()がいけない理由はいくつかある。気になるなら過去ログを読め。
0949945NGNG
CRT=Cランタイムライブラリ
ひとまずFAQの11.12〜11.15を読んでる。
0950945NGNG
結局、重要なのはこの二点か。
Q.11.12より
> Declaring a function as void does not merely shut off or rearrange warnings:
> it may also result in a different function call/return sequence, incompatible with
> what the caller (in main's case, the C run-time startup code) expects.
関数をvoidとして宣言するのはウォーニングを殺すだけではなく、呼び出し元(main()の場合は
CRTスタートアップ)の期待する物と異なる、互換性の無い関数コール/リターンシーケンスに
コンパイルされる恐れがある。

Q.11.14より
> It doesn't matter whether main() returns or not, or whether anyone looks at the status;
> the problem is that when main() is misdeclared, its caller (the runtime startup code)
> may not even be able to *call* it correctly (due to the potential clash of calling conventions;
> see question 11.12). Your operating system may ignore the exit status, and void main()
> may work for you, but it is not portable and not correct.
main(0が値を返すか否か、又それをOS等がチェックするかが問題なのではなく、重要なのはmain()の
宣言がおかしければ、呼び出し元(ランタイムスタートアップコード)が正しくmain()を呼び出すこと
すらままならなくなる(関数呼び出しコード変換の内部的問題による→Q.11.12参照)ためである。
結局のところ移植性の面で問題が起きる。

コンパイラ(と、呼び出し側のCRT)がアホじゃなきゃ問題ないって話だが、intにしときゃ
尚更問題ない、と。
0951デフォルトの名無しさんNGNG
ファイルから読み込む処理でfgetsを使っています。
 しかしこれを使うと改行コードまで読み込んでしまいますね
getsを使わず、しかも処理系に依存しない(改行コードのバイト数を考慮しない)
改行コードの取り除き方ってあるのでしょうか?
0952945NGNG
18行目ぐらい訂正
main(0→main()
どうでもいいが。
0953デフォルトの名無しさんNGNG
>>951
普通は改行コードまで読んでから末尾から見ていって\rか\nを見つけたら削って\rでも\nでもなければ終了という関数で削り落とすと思う。
0954デフォルトの名無しさんNGNG
>>951
テキストモードで fopen() すればいいでしょ
0955デフォルトの名無しさんNGNG
>>954
それこそMSな処理系ベッタリなんじゃね?
0956デフォルトの名無しさんNGNG
テキストモードとバイナリモードって、MS依存だったんですか
そーですか
0957デフォルトの名無しさんNGNG
そうですよ
0958951NGNG
ありがとうございます
 改行コードってどんな処理系も\r \n \r\nしかないんですかね?
0959デフォルトの名無しさんNGNG
狂った改行コード修正ツールで壊されて\r\r\nとなったものは見たことあるけど、\rと\nのどちらでもないものを
改行コードに使う環境は見たことないな。
0960デフォルトの名無しさんNGNG
どんな処理系も、と言われたらNoと答えるほうが無難ちゃうかな(w
0961デフォルトの名無しさんNGNG
>>955
プ
0962デフォルトの名無しさんNGNG
strtok(buf, "\r\n");
0963951NGNG
主な処理系は って事ですね。
 ありがとうございます。
0964デフォルトの名無しさんNGNG
>>961
え、違うの?
0965デフォルトの名無しさんNGNG
カッコイイ変数の命名法を教えてください。
0966デフォルトの名無しさんNGNG
ハンガリwせdrtgyふじこl
0967デフォルトの名無しさんNGNG
ANSIの範囲じゃないがMS依存でもないって所じゃないカナ
0968デフォルトの名無しさんNGNG
>>965

char MS_06, MSM_09, MSN_02;
0969デフォルトの名無しさんNGNG
今、どんな名前のファイルがオープンされているのか知りたいのですが、
C言語を使って実装可能でしょうか?無理なら諦めます。
あと、環境依存ですかね。環境依存なら別スレいきます。
0970デフォルトの名無しさんNGNG
>>969
環境依存です。
0971デフォルトの名無しさんNGNG
>>970
分かりました。違うスレに行きます。
0972デフォルトの名無しさんNGNG
>>970
分かりました。違うスレに行きます。
0973デフォルトの名無しさんNGNG
>>967
UNIX系では無意味じゃない?
ひとまず実験してみた。
実験用ソース
#include <stdio.h>

int main(void) {
    FILE *fp;
    char hoge1[5], hoge2[5];
    fp = fopen("input", "rb");
    fgets(hoge1, 5, fp);
    printf("rb: %d\n", strlen(hoge1));
    fclose(fp);
    fp = fopen("input", "r");
    fgets(hoge2, 5, fp);
    printf("r: %d\n", strlen(hoge2));
    return 0;
}

$ gcc ./rb.c
$ perl -e 'print "\r\n";' > ./input
$ ./a.out
rb: 2
r: 2

環境はDebian Sarge/libc6(バージョン失念)
0974デフォルトの名無しさんNGNG
ちなみにWin32/MinGWでやるとこうなる。
rb: 2
r: 1
0975デフォルトの名無しさんNGNG
>>973
旧MacOSは改行コードが\rだった。
CP/M-86は改行コードが\r\nで、ファイル末尾のレコードは\x1bが詰められていた。
MS-DOSもファイル末尾に\x1bが付加されているのが普通だった。
0976デフォルトの名無しさんNGNG
>>969
意味が曖昧だな。
自分で開いたならその名前を覚えておけばいいんじゃないのか?
0977デフォルトの名無しさんNGNG
>>973
改行コードが'\n'の環境では、そりゃ動作に違いは出ないだろう。
0978デフォルトの名無しさんNGNG
#include <stdio.h>

void main ( )
{

       int count;

       for ("count=0; count==5; count++" ) {
              printf("count=5");
       }
}

↑構成文エラーになるんですけど、どこか間違ってますか?
0979デフォルトの名無しさんNGNG
それはギャグで言っているのか!?

とりあえず、エラーとは無関係な void main に突っ込もうぜー( ̄ー ̄)
0980デフォルトの名無しさんNGNG
>>978
君はPerlでeval()をガンガン使うといいよ。
0981デフォルトの名無しさんNGNG
つーかMacOS8/9あたりで>>973やるとどんな結果になるの?
0982デフォルトの名無しさんNGNG
すいません本気です。。
void main()
はHP講座に書いてあったのを真似ただけなので。
0983デフォルトの名無しさんNGNG
> #include <stdio.h>
>
> void main ( )
> {
>
>       int count;
>
>       for ("count=0; count==5; count++" ) {
          ↑          ↑      ↑
          (1)         (2)      (1)
>               printf("count=5");
>        }
> }
>
> ↑構成文エラーになるんですけど、どこか間違ってますか?
     ↑
    (番外)
0984デフォルトの名無しさんNGNG
(2)は何を問題にしてるの
0985デフォルトの名無しさんNGNG
forはuntilじゃねーよってこった。
0986デフォルトの名無しさんNGNG
>>984
うん、間違ってはいないね。ただ、for()ループ内が実行されることは一度たりと無いだけで。
0987デフォルトの名無しさんNGNG
>>984
エラーの原因じゃないけど間違ってるやん
0988デフォルトの名無しさんNGNG
次スレよろ↓
0989デフォルトの名無しさんNGNG
#include <stdio.h>

void main ( )
{

       int count;

       for (count=0; count=5; count+=1 ) {
              printf("count=5");
       }
}

ありがとうございます。こうしたら出来ました。でも無限ループなっちゃいました。
countが5の時だけメッセージが出るようにしたかったのですが…
0990デフォルトの名無しさんNGNG
>>978
マジレスするとな、ダブルクォーテーションでくくられとる。
0991      ↓NGNG
       ↓
0992デフォルトの名無しさんNGNG
続きは次スレで↑ この本文でスレ立てて。残りは貼るから
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

コンパイラを探しているなら >>2-13 を。
上記を逸した場合の結果は激しく未定義だYO!

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

各種リンクは>>3-20あたり(誰か適当に貼って)

C言語なら俺に聞け! Part 82
http://pc5.2ch.net/test/read.cgi/tech/1087049069/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0993デフォルトの名無しさんNGNG
>>989
count=5は常に真。
0994デフォルトの名無しさんNGNG
次スレは978が立ててくれてるぞ(w
http://pc5.2ch.net/test/read.cgi/tech/1088147598/l50
0995デフォルトの名無しさんNGNG
>>989
わらった。ごめんね。

for (count = 0; count < 5; count += 1)
  printf("count = %d\n", count);
0996デフォルトの名無しさんNGNG
for (count=0; count=5; count+=1 ) {


開始する時にcountに0が代入される
↓←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←
count+=1で1加算される                                      ↑
↓                                                   ↑
count = 5でcountに5が代入される。count = 5は5と評価され、0(偽)ではないので真。 ↑
↓                                                   ↑
真なのでループ→→→→→→→→→→→→→→→→→→→→→→→→→→→→→↑
0997デフォルトの名無しさんNGNG
そうとう暇なんだな
アマグラマにお兄さんぶらせる機会を与えてるのかな?
いい奴だ
0998995NGNG
最下行読んでなかったや

for (count = 0; count < 5; count += 1)
  if (count == 5)
    printf("count=5");
0999デフォルトの名無しさんNGNG
for(;;)
;
1000デフォルトの名無しさんNGNG
>>998
アホかw
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。