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

C言語なら俺に聞け<34>

レス数が1000を超えています。これ以上書き込みはできません。
0001ま  た  未  定  義  かNGNG
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/

・前スレ <33> http://pc3.2ch.net/test/read.cgi/tech/1032606064/

コンパイラ、過去ログなどのリンクは>>2-5 あたり
0002デフォルトの名無しさん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/

【ライセンスや機能などに問題あり】
Microsot 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
0003デフォルトの名無しさんNGNG
>>1
スレ立ておつです
0004デフォルトの名無しさんNGNG
【その他】
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html

【注意】
Cmachineは一般的なCと挙動が違いすぎるので動作の保証はできません。
まともな処理系を使いましょう。
0005デフォルトの名無しさんNGNG
ござーるござるよハットリくんはー
ゆかいなみかたーにんじゃでござるー
にんじゃでござるー
0006デフォルトの名無しさんNGNG
【過去ログ】
33 http://pc3.2ch.net/test/read.cgi/tech/1032606064/
32 http://pc3.2ch.net/test/read.cgi/tech/1031905402/
31 http://pc3.2ch.net/test/read.cgi/tech/1031340950/
30 http://pc3.2ch.net/test/read.cgi/tech/1030786546/
29 http://pc3.2ch.net/test/read.cgi/tech/1029605182/
28 http://pc3.2ch.net/test/read.cgi/tech/1028495798/
27 http://pc3.2ch.net/test/read.cgi/tech/1027160374/
26 http://pc3.2ch.net/test/read.cgi/tech/1026048820/
0007デフォルトの名無しさんNGNG
【過去ログ】
25 http://pc.2ch.net/tech/kako/1024/10249/1024918442.html
24 http://pc.2ch.net/tech/kako/1024/10240/1024033400.html
23 http://pc.2ch.net/tech/kako/1023/10230/1023024817.html
22 http://pc.2ch.net/tech/kako/1022/10224/1022402165.html
21 http://pc.2ch.net/tech/kako/1022/10220/1022045622.html
20 http://pc.2ch.net/tech/kako/1021/10214/1021459016.html
19 http://pc.2ch.net/tech/kako/1020/10207/1020756993.html
18 http://pc.2ch.net/tech/kako/1020/10202/1020260813.html
17 http://pc.2ch.net/tech/kako/1019/10193/1019372139.html
16 http://pc.2ch.net/tech/kako/1018/10184/1018453690.html
15 http://pc.2ch.net/tech/kako/1016/10165/1016519243.html
14 http://pc.2ch.net/tech/kako/1015/10152/1015286974.html
13 http://pc.2ch.net/tech/kako/1013/10139/1013990673.html
12 http://pc.2ch.net/tech/kako/1012/10123/1012348974.html
11 http://pc.2ch.net/tech/kako/1009/10094/1009499565.html
10 http://pc.2ch.net/tech/kako/1008/10083/1008300863.html
9 http://pc.2ch.net/tech/kako/1007/10072/1007272267.html
8 http://pc.2ch.net/tech/kako/1005/10058/1005811510.html
7 http://pc.2ch.net/tech/kako/1003/10034/1003418249.html
6 http://piza2.2ch.net/tech/kako/999/999617524.html
5 http://piza2.2ch.net/tech/kako/994/994908590.html
4 http://piza.2ch.net/tech/kako/992/992357382.html
3 http://piza.2ch.net/tech/kako/989/989929288.html
2 http://piza.2ch.net/tech/kako/979/979529893.html
1 http://piza.2ch.net/tech/kako/967/967985026.html
0008デフォルトの名無しさんNGNG
Cスレってもしかして、各種言語で一番回転速い?
0009デフォルトの名無しさんNGNG
>>8
特定の言語専用スレではそうかも・・・
未定義のせいだ。
0010デフォルトの名無しさんNGNG
つーか駄スレが多いだけだと思う
0011デフォルトの名無しさんNGNG
Delphi関連スレが最速だと思う。
0012デフォルトの名無しさんNGNG
これでvoidが戻ってきたら・・・・1スレッド一週間もたないかもな。
0013デフォルトの名無しさんNGNG
場違いな5にワラタ
0014デフォルトの名無しさんNGNG
どこかの言語と違ってスレが分散していないからである。
とてもいい傾向だ。まさしく2chでのスレのあり方についての
見本である。
0015デフォルトの名無しさんNGNG
>9
確かに、phpやjavaだと質問するまでもないもんな・・・
ライブラリも豊富やし。
//Cでライブラリつーと、漏れはglibたまにつかっとるが。
Cスレは結構見てるんだけど回転速すぎ。

厨房質問は隔離シル!
0016デフォルトの名無しさんNGNG
厨房質問スマソ

どんな型でも扱えるqsortという関数がありますよね?
あれは要素を交換するときは1バイトずつ要素の大きさ分交換すればいいんですか?
とりあえず交換するための関数を下のように書いてみたんですが。

static void swap(unsigned char *v1,unsigned char *v2;size_t n)
{
  unsigned char t;

  for(;n--;v1++,v2++)
    t=*v1,*v1=*v2,*v2=t;
}
0017デフォルトの名無しさんNGNG
>>16
交換させる関数なんて作る必要ないよ?
配列要素の型のサイズを入れるだけ。
0018デフォルトの名無しさんNGNG
>>16
余談だけどv1++,v2++よりv1[n] v2[n] のほうが早いらしい
0019デフォルトの名無しさんNGNG
>>18
そんなの環境によるだろ
0020デフォルトの名無しさんNGNG
その前にコンパイルできないと思うんだが・・・
0021デフォルトの名無しさんNGNG
>>17
ごめんなさい。2行目の意味がわからないです・・・

>>18
そうなんですか?n--と一回やるだけだからですか?
0022デフォルトの名無しさんNGNG
>>20
コンパイルはできました。きちんと動きました。
ただ、本当にこの方法でよいのかと思い質問しました。
0023デフォルトの名無しさんNGNG
>>21
コンパイラがすげえ賢かったら
実際にインクリメントされるレジスタは一個だけかもしれない
002417NGNG
>>21
#define N 10
int a[N];
qsort(a,N,sizeof(int),comp);
つーかマニュアル読め
0025デフォルトの名無しさんNGNG
>>21
qsort(array, count, sizeof(*array), CompareFunc);
のような感じ。

18はネタだろ。
0026デフォルトの名無しさんNGNG
>>24
qsortを実装するときのことを聞いているんですが・・・
0027デフォルトの名無しさんNGNG
>>26
はあ?
もしかしてコールバック関数のこと?
0028デフォルトの名無しさんNGNG
>>27
qsortを自分でつくるときの要素の交換方法です。
型が決まっていればその型の変数を定義してそれを介して交換すればOKなんですが。
0029 ◆k/Ubp.Kg NGNG
>>28
もしかして、qsortと同じ働きをするものを自分で作りたいの?
0030デフォルトの名無しさんNGNG
>>29
そうです!
というかもうつくりました。
ただ、本当にこんな方法でいいのかと・・・
0031デフォルトの名無しさんNGNG
>>28
>型が決まっていれば
だからサイズを渡すんだろう?
0032デフォルトの名無しさんNGNG
>>28
そういう意味ね。
同じようにコールバックで実装すればいいじゃん。
ただしこの場合でもコールバック関数の方では
あらかじめ型を知っておく必要がある。
0033デフォルトの名無しさんNGNG
型情報をとらない(とれない)だから、memcpy系の方法で
移動させてるんじゃないの?
003432NGNG
あ、ごめん。31の方が正論。
0035デフォルトの名無しさんNGNG
>>32
その型というのは型のサイズのことですよね?
>>16で書いた関数のnがそれにあたります。
0036デフォルトの名無しさんNGNG
>>33
そのためのバッファの大きさがコンパイル時に決まらないのでmemcpyは使えないかと・・・
また失敗は許されないから、mallocも使えないし。
003718NGNG
>>21
19の言うとおり環境依存だけど
nはレジスタに置かれて
Pentium系だと
v1[n],v2[n]は*v1,*v2と速度的に同じくなる
++v1,++v2 がなくなる分だけ早いよ
0038デフォルトの名無しさんNGNG
>>31
決まっているというのは、常に同じ型を扱うという意味です。
003925NGNG
>>37
> Pentium系だと
> v1[n],v2[n]は*v1,*v2と速度的に同じくなる
> ++v1,++v2 がなくなる分だけ早いよ

そうとは限らん。
コンパイラがソースと同じバイナリを吐き出すとは
限らない。極端に言えばどちらでも同じコードが
生成されるかもしれない。
0040デフォルトの名無しさんNGNG
>>39
ん、そりゃもちろんそうです
0041デフォルトの名無しさんNGNG
>>36
あーなるほど解ってなかった。とりあえず "qsort.c" でぐぐると
実装例が出てくるね。たしかに可変サイズのバッファなんか使ってないようだ
0042デフォルトの名無しさんNGNG
結局、自分で実装するなら16のような方法でいいと思うぞ。
他にやるとすれば、intのサイズずつ処理するとか。
0043デフォルトの名無しさんNGNG
glibcのqsort.cは交換の部分をマクロにしているね
0044デフォルトの名無しさんNGNG
>>42
わかりました。ありがとうございます。

添え字を使うか今と同じポインタを使うかは自分の環境で速いほうを使いますね。
0045 ◆k/Ubp.Kg NGNG
>>43
実用レベルのライブラリで do { statement; } while(0) 形式のマクロが使われてるのって始めて見た。
俺が気が付いてなかっただけで意外とあるのかも…。てっきりDQNプログラマ用の構文だと思ってたのに。
004644NGNG
そういえば添え字かポインタかよりも、関数の再帰呼び出しでクイックソートを実現していることの方が速度的に問題があるかも・・・・
0047デフォルトの名無しさんNGNG
>>45
俺は結構よく見かけるよ。
0048デフォルトの名無しさんNGNG
>>45
なんにつかうのそれ
breakでぬけたりしたいの?
0049デフォルトの名無しさんNGNG
>>48
あれだ、ブロックにして関数の途中でも変数を定義できるようにすると・・・・
0050デフォルトの名無しさんNGNG
>>49
スコープ作りたいってことか
0051 ◆k/Ubp.Kg NGNG
>>48
俺は使わないけど、

#define print_10(string)              \
    do {                              \
        int i;                        \
        for(i = 0 ; i < 10 ; ++i) {   \
            printf("%s\n", string);   \
        }                             \
    } while (0)
0052デフォルトの名無しさんNGNG
そんなマクロ組むくらいならinlineで関数書けばいいのにね
と思ったところではじまらないしおわらないわな
0053デフォルトの名無しさんNGNG
>>52
ネタ?だよね?
0054デフォルトの名無しさんNGNG
>>52
あのさあ、、、
もう突っ込む穴も無くなった。
0055デフォルトの名無しさんNGNG
age
0056デフォルトの名無しさんNGNG
>>51で宣言したi(int i; のi)の適用範囲を
明示したいとか理由があるんでしょ。
0057デフォルトの名無しさんNGNG
>>1
これもちゃんと書いときなさい!

プログラマ必読・作ってわかるCプログラミング(通称 アヒル本)
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/
0058とりあえず手持ちのNGNG
swap(x,y) \
  do{\
    struct z{char v[sizeof(x)]}t;\
    t = *(struct z*)&(x);\
    *(struct z*)&(x) = *(struct z*)&(y);\
    *(struct z*)&(y) = t;\
  }while(0);
0059デフォルトの名無しさんNGNG
>>58
最後にセミコロンを付けてしまうと、
do{}while(0) を使う意味がなくなる
と思いますが?
0060デフォルトの名無しさんNGNG
ここの人間にはどうでもよいかもしれないが、
一般的にデクリメント命令の方がインクリメント命令より
使用クロック数が少ない。
0061デフォルトの名無しさんNGNG
>>60
ネタだよね? 一般的にって何?
俺が使ってるCPUはどちらも変わらない。
0062(x,y)NGNG
do{}while(0)は{}の数の対応も検出でき(以下略
006359NGNG
>>62
ごめん。意味わからんのだけど。
006458NGNG
>>59
ごめんマジボケ。
0065○NGNG
初心者でスマソ・・・・ポインタを使うことによって得られる利点て実際の所どんなもんなんですか?
参考書とかの例題見ても、これなら使う必要ないよな、とか思ってしまうのですが。
0066デフォルトの名無しさんNGNG
memory節約?
0067デフォルトの名無しさんNGNG
RubyはCより遙かに高速
0068デフォルトの名無しさんNGNG
>>65
たくさんありすぎて書ききれないな。
たとえば、あらかじめサイズが予測できない
文字列に対して何らかの加工をする関数を
作ろうと思ったら、ポインタが使えないと不可能だね。
0069デフォルトの名無しさんNGNG
>>36
qsort の話で無くて申し訳ないけど、、、
*BSD のライブラリに入っている heapsort は malloc を使っていて、
malloc に失敗したら潔くあきらめる(-1 を返す)。 おかげで、扱いが
面倒だけど、キーが同じ要素がたくさんある場合など qsort に比べて
性能が宵場合が少なからずあるので、状況によって使いわけている。
(heapsort はそのアルゴリズム上、要素1個分のメモリが確保できると
交換(と言うか書き込み)の回数が相当減るので、そういう実装も仕方が
無いのよね。)
0070デフォルトの名無しさんNGNG
>>65
使う必要はありません。全部グローバル変数でOKです。
0071デフォルトの名無しさんNGNG
厨房で申し訳ないのだが、perl でいうところの substr みたいな関数は
あるですか? FreeBSD で C の勉強してまふ。ないなら、それっぽい
処理方法をおしえてくらさい。
0072デフォルトの名無しさんNGNG
char *substr(char *s, int from, int to);
0073デフォルトの名無しさんNGNG
>>71
perlでいうところのsubstrが何をする関数かわからん。
文字列のオブジェクトから文字列を切り出して切り出した文字列のオブジェクトを作成して返すんだろうか?
007471NGNG
>>72
そんな関数定義されてないみたいですけど。少なくとも man や、string.h には。

>>73
文字列の何番目から何番目までを取り出す、っていう関数です。
007573NGNG
>>72
それはC標準ではサポートされていない。
0076デフォルトの名無しさんNGNG
cなら、先頭はポインタで指定してstrncpy使うしかないと思います。
0077デフォルトの名無しさんNGNG
strnlenはGNUの拡張らしいんですが、どの環境なら使えるのでしょうか?
007873NGNG


char *substr(char *s, int from, int to) {

char *pTemp = (char*)malloc(sizeof(char) * ((to - from) + 2));
if(pTemp) {
strncpy(pTemp , &s[from] , to - from + 1);
pTemp[to - from + 2] = '\0';
}
return pTemp;
}
0079デフォルトの名無しさんNGNG
char *substr(char *s, int from, int to)
{
    char *p= s= s + from;
    while (to--)
        ++s;
    *s= '\0';
    return p;
}
008071NGNG
>>78
ぬぉっ。さんくす! 試してみて、漏れライブラリに追加しておきます。
# いい人だね。
008178NGNG
>>71
fromは0から始まるのでおきおつけて
0082デフォルトの名無しさんNGNG
>>79
ねぇ、なんでこんなアフォなことするわけ ?

> while (to--)
> ++s;

s += to; でいいと思うんだけど。

つーか >>79 のプログラムなら、

char *substr(char *s, int from, int n)
{
 s += from;
 s[n] = '\0';
 return s;
}

で十分だよ。

まあ、これでは substr("abcd", 1, 2) とかやるとアウトだし、あんまり実用的じゃねーな。
0083デフォルトの名無しさんNGNG
#include <stdio.h>

#define UNIX 1

int main(void){
   printf(&UNIX["\t%six\n"], (UNIX)["have"] + "fun" - 0x60);

    return 0;
}

なぜunixと表示されるのか、誰か解説してください。
0084デフォルトの名無しさんNGNG
 strnpy(dst, src+from, to-from)[to-from] = '¥0';
0085デフォルトの名無しさんNGNG
>>83
&UNIX["¥t%six¥n"] == &"¥t%six¥n"[UNIX] == "%six¥n"
(UNIX)["have"] == "have"[UNIX] = 'a'
'a' + "fun" - 0x60 = "fun" + 1 = "un"
0086デフォルトの名無しさんNGNG
最後の行修正。
'a' + "fun" - 0x60 == "fun" + ('a' - 0x60) == "fun"[1] == "un"
0087デフォルトの名無しさんNGNG
間違っちゃった…鬱氏…
× "fun"[1]
○ &"fun"[1]
0088デフォルトの名無しさんNGNG
>>85-87
最終的にprintf("%six\n", "un");
になるってことでOK?
0089デフォルトの名無しさんNGNG
>>88
そうだね。
printf(&1["\t%six\n"], (1)["have"] + "fun" - 0x60);
printf("\t%six\n" + 1, "have"[1] + "fun" - 0x60);
printf("%six\n", "fun" + 0x61 - 0x60);
printf("%six\n", "un");
009052NGNG
>>53
どこがネタだかわかんないんだけど
何かおかしなことを言っているんだったら
具体的に指摘をしてください
今日一日考えたけどわかりませんでした
0091デフォルトの名無しさんNGNG
>>52
53がネタかCでインライン関数が使えないと思っているだけ。
0092デフォルトの名無しさんNGNG
>>90
C99はまだ広まっていないよ・・・
0093デフォルトの名無しさんNGNG
for を含む関数をインラインにするのはどうかと思う

つうことじゃないの?
0094デフォルトの名無しさんNGNG
なるほど。つまり >91は
コンパイラの拡張機能を勝手に標準だと思っているか、
すべてのコンパイラがC99に準拠していると思っているか、
CとC++の違いをわかっていない、
つまり自分がネタを披露していることに気づいていない
ということですな。
0095デフォルトの名無しさんNGNG
C99 って標準じゃないの?
0096デフォルトの名無しさんNGNG
>>52はインライン関数がC99からではなく、最初から使えたと思いこんでいるところが痛いんだろ。
最初から使えたと思っていなければあんなレスはできないはず。
0097デフォルトの名無しさんNGNG
漏れはC99から始めたので最初から使えましたが、なにか?
0098デフォルトの名無しさんNGNG
つまり移植性をまるで考えに入れてないってことで。
0099デフォルトの名無しさんNGNG
自分のコンパイラで使える機能は他のコンパイラでも
使えると思っている奴って、ある意味すごいな。
実用レベルのライブラリは一生作れないだろうけど。
0100デフォルトの名無しさんNGNG
ちっちぇーなー
誰でも知っていることでえらそーにグダグダ書いて。
使ってるコンパイラによるんだから揚げ足取りやっててもおわんねーだろ。
0101sageNGNG
>>100=91
逆切れですか。
0102デフォルトの名無しさんNGNG
> 使ってるコンパイラによるんだから
だからinlineを使うのがまずいと言われていることに
気づいているのだろうか。
0103デフォルトの名無しさんNGNG
インラインで書くべき処理じゃないということが要点なのでは?
いつから使えたかというのは2次的なことで。
0104デフォルトの名無しさんNGNG
代入式って何で
j=i+50;
とは書けないんでしょうか?
超厨房質問でしょうがよろしくお願いします。
0105104NGNG
すいません。書き間違えました。
代入式って何で
i+50=j;
とは書けないんでしょうか?
超厨房質問でしょうがよろしくお願いします。
0106デフォルトの名無しさんNGNG
>>104
かけないわけないでしょ。
きちんとjとiを定義した?
0107106NGNG
>>105
当たり前。
i+50は左辺にならない。iがポインタで*(i+50)ならできるけど。
0108デフォルトの名無しさんNGNG
>>105
その結果どうなることを期待してるの?
0109107NGNG
「左辺には」じゃなくて「左辺値には」だな。
0110デフォルトの名無しさんNGNG
>>103
だったらマクロでも同じ事じゃん。
まあネタだったんからどっちでもいいや。
0111デフォルトの名無しさんNGNG
代入先は左辺に書かなければならない
0112104NGNG
>>106
すいません。書き間違いです。

>>107-108
=の演算子は「右辺値を左辺値に代入する」っていう決まりなんですか?
内心i+50の結果がjに入るのを期待したんですが・・・
0113デフォルトの名無しさんNGNG
>>112
=は左にあるものに右の結果を代入する演算子だぞ(^_^;)
0114104NGNG
>>106-113
ありがとうございます。勉強不足でした。
0115デフォルトの名無しさんNGNG
>>112
つまり、x = yと書くとき、
「x の値が y に入るか、y の値が x に入るかが不定だったらいいなあ♥」
ってことか?
0116デフォルトの名無しさんNGNG
>>115
それが不定だったら俺はCを捨てる(笑)
0117デフォルトの名無しさんNGNG
未定義の方がイイ!
0118デフォルトの名無しさんNGNG
>>112
キミは今すぐPrologを使え。
0119デフォルトの名無しさんNGNG
なるほど
0120デフォルトの名無しさんNGNG
>>115
んで、代入方向を明示的に指示するのには x<=y, x=>y などとするんだな。
もちろん、ifなどの条件式と通常の部分での間違いを防ぐために
012152NGNG
>>92
あーそういうことでしたか
了解しました
0122デフォルトの名無しさんNGNG
x := y, x =: y にするとか
0123デフォルトの名無しさんNGNG
swap(x,y){x:=y:=x;}
0124デフォルトの名無しさんNGNG
よっしゃ!そんなときこそC++のストリーシンタクスだ!
x << y; // xにyを代入
y >> x; // yにxを代入

0125デフォルトの名無しさんNGNG
普通に0を代入して初期化するのと,
ビット操作で0に初期化するのとどっちが早いですか?
0126デフォルトの名無しさんNGNG
>>125
コンパイラとCPUに聞け。
0127デフォルトの名無しさんNGNG
>>125
環境による。
でもその程度ならよほどタコなコンパイラでない限り
どちらも同じコードになると思う。
0128デフォルトの名無しさんNGNG
>>125
ちなみにビット操作で0にするって、どうするの?
0129デフォルトの名無しさんNGNG
x ^= x
Z80じゃあるまいし。。
0130デフォルトの名無しさんNGNG
>>129
それ、よくやってたなぁ。今じゃ役に立たない知識だけど。
0131デフォルトの名無しさんNGNG
>>129
まじでそんなコードを書く人がいるの?
同じ数同士XORを取れば確かに0になるが・・・・
0132デフォルトの名無しさんNGNG
>>127
ていうか、最適化時に xor にしないコンパイラなんて存在するんだろうか
0133デフォルトの名無しさんNGNG
xoreax, eax

VC++6.0はXORにするみたいだな。
0134デフォルトの名無しさんNGNG
>>131
大昔はそうするのが常識だったんだ。
0135デフォルトの名無しさんNGNG
いうなれば定石みたいなもんだったからな。
xor a
0136デフォルトの名無しさんNGNG
>>131
>>132の言う通り。
適当なプログラムコンパイルした後
アセンブラにどう変換されているのか試してみれ。
0137デフォルトの名無しさんNGNG
>>134-135
そうなんだ。
そんなに問題になるほどの差があったのかな・・・

>>136
やってみました。>>133がそれです。
アセンブラはよくわからないけど、これくらいならなんとか。
eaxレジスタにあるもの同士でXOR取ってまたeaxにいれるんですよね?
0138デフォルトの名無しさんNGNG
>>132
gccでは最適化すると、XOR使ったソースでも 0をロードするアセンブラ
吐くようだ。
0139デフォルトの名無しさんNGNG
>>137
結構有ったのよ。
有名なところでスーパーマリオをROMの中に詰め込む苦労話とか、
その当時はみんな同じような苦労をしていた。

それが今や、、Str[10]で足りると思うんだけど、余裕もって
Str[1000]で宣言しとくか! とかやってる俺。
0140デフォルトの名無しさんNGNG
>>139
あ、おれも・・・
256とか1024とか、256の倍数で取っている。本当は30くらいでよいのだけれど(^_^;)
0141デフォルトの名無しさんNGNG
俺も
面倒だから,全部1000にしているよ
0142fuck!NGNG
Why I hate C
There is almost no run-time error checking. In particular, arguments passed to functions are not type-checked, and array offsets are not compared with the bounds of the array.

There is no real string type. So the syntax is convoluted for common tasks like appending one string to another. Also, there are subtle differences between "char stuff[]" and "char *stuff" that are hard for a beginner to debug.

The necessity for function prototypes means you have to put essentially the same information in two places, so every time you make certain changes you need to edit multiple files.

Possibly the fascistic insistence on prototypes was some sort of attempt to compensate for the lack of *run-time* error-checking.

Personally, I think the syntax is pointlessly convoluted.


while ((*dest++ = *src++) != '\0') {

seems so far removed from any English-language representation of what's happening that the assembler code is literally easier to understand.

Likewise, the "#include <stdio.h>" seems silly. It would be much more general to have syntax more like "#include "%LIB%/stdio.h"

0143fuck!NGNG
The world would be a much better place if the people who invented C had learned to type first. (Ie, the syntax seems to have been designed to minimize keystrokes, no matter what the effect on readability.)

The language does not really support multidimensional arrays.


The comment characters require two keystrokes. Even worse, they don't nest, so it's hard to quickly comment out sections of
code when you're debugging -- unless of course you don't put actual comments in your code, until "I finish debugging and do the cleanup".

Also, personally I would like comments that last to the end of the line (like the semicolons in assembler).

And why do preprocessor commands use the "#" character, that everyone else uses as a comment? Seems like a last-minute kludge to me.

These "void pointers" seem to me like a kludge bolted onto a confession of defeat. What is the point of declaring the type of parameters when you don't know what it is??


On P142 of K&R (2nd ed) there's a sentence that sounds to me like sarcasm: "The question of the type declaration for a function like malloc is a vexing one for any language that takes its type-checking seriously."

Obviously C does not take type-checking seriously, and clearly K&R are hardly vexed at all by having to recommend a kludge that kicks type-checking in the groin.
0144英語わからんNGNG
なんだなんだ?荒らしか?
0145132NGNG
>>138
うぞーん
0146127NGNG
>>134,135
x86では今でも XORでクリアするのが定石だと思う。
フラグを破壊したくない時だけ mov eax,0 かな。
Pen4ではどうなったか知らないけど。
0147135NGNG
あうん、なんか過去形で書いてたな。
Pentium 4 なら 0.5 クロック命令だね
0148146NGNG
>>147
Pen4でも 即値のロードと XORのクロックは変わらず?
もしそうだったらやはりXORが定石かな?
0149135NGNG
xor でいいんじゃないかな?
命令長は xor なら 2 バイト、即値なら movzx で 3 バイトだから
0150146NGNG
>>149
了解です。(MOVZX→MOV だよね)
ありがとう。
0151デフォルトの名無しさんNGNG
BOX Box[10]; //構造体

for(i=0;i<10-1;i++)
{
box[i]=box[i+1];
}


*pbox=box;

for(i=0;i<10-1;i++)
{
pbox[i]=pbox[i+1];
}

ポインタを使ったほうが早い?
0152デフォルトの名無しさんNGNG
>>151
環境による。
というか何それ? ほとんど同じじゃん。
0153デフォルトの名無しさんNGNG
> *pbox=box;
は
pbox=&box;
だよね。
素直にmemmoveでもいいんじゃない?
0154デフォルトの名無しさんNGNG
>>149
命令長とかクロック数はどこで調べられますか?
0155デフォルトの名無しさんNGNG
>>154
Intelの日本語サイトに資料があると思うよ。
0156デフォルトの名無しさんNGNG
>>153
memcpyってつかってはいけないんですたっけ?
memmove>memcpy?
0157153NGNG
>>156
重なり合う領域だからmemcpyはまずい。
0158デフォルトの名無しさんNGNG
あ,そうか
これからポインタの本ちょっと見返してみるよ
0159135NGNG
>>154
命令長は Intel のリファレンス PDF を見るといいよ。(これ必携)

ttp://www.intel.co.jp/jp/developer/design/pentiumiii/manuals/index.htm
IA-32 インテル(R) アーキテクチャ・ソフトウェア・デべロッパーズ・マニュアル
上巻、中巻、下巻

クロック数は、CPU によって違うから一概にはいえない。
0160デフォルトの名無しさんNGNG
>>155>>159
ありがとうございます。
今ISDNで必死にダウンロード中です。(笑

ところでZ80とかの純粋なCISCならともかく
P4みたいなパイプライン付きCISCや
RISCのプロセッサでは正確な実行時間は
把握できるものなのでしょうか。
0161デフォルトの名無しさんNGNG
メモリのウェイトとかOSによっては
タスク切り替えとかはどう考えるつもりだ?
0162デフォルトの名無しさんNGNG
どこかで見たような話だが、確かベンチマークとかだと
正確な実行時間は推測できないとかいう話だよな。
0163デフォルトの名無しさんNGNG
昔はCPUの資料見て高速な命令使って最適化してたけど
クロックインフレのご時世にはそんなことは無意味だった気がする・・
0164デフォルトの名無しさんNGNG
無意味ってこたーないだろ
0165デフォルトの名無しさんNGNG
それは該当する関数の使用頻度によるのではないかと。
0166デフォルトの名無しさんNGNG
>>163
無意味ってことは絶対にないけど、そういう作業は
コンパイラがガンガンやってくれるからね。
人間がやるべきは、CPU 命令単位の最適化よりも
アルゴリズムの最適化であることは間違いない。

MMX を使った画像処理のループとかになると、
やっぱり CPU の資料は手放せないけどね
0167デフォルトの名無しさんNGNG
MMXってなんでそんなに特殊なのですか?
そういったものも含めて変わった事が色々出来るみたいだけれど。
0168デフォルトの名無しさんNGNG
>>167
別に特殊じゃない(と思う)けど、MMX 使おうと思ったら
Intel の MMX 最適化コンパイラでも使わない限りは
インラインアセンブラで書くことになるでしょ。

コンパイラはアセンブラで書いた部分の最適化は
やってくれないから、自分でペアリングやクロック数を
考えたりしながら最適化することになるわけで。
0169デフォルトの名無しさんNGNG
C言語の32個の予約語のうち、
volatile と unsigned signed enum が読めません。
どう読むのですか?
0170デフォルトの名無しさんNGNG
>>169
http://www.okakogi.go.jp/People/miwa/program/c_lang/c_furoku.html
0171デフォルトの名無しさんNGNG
>>169
まず英和辞典で調べろ。
ちなみに enum は enumeration の略だ。
0172デフォルトの名無しさんNGNG
auto オート
break ブレーク
case ケース
char キャラ           チャー,キャラクタ
const コンスト
continue コンティニュー
default デフォルト
do ドゥー
double ダブル
else エルス
enum イナム エナム
extern エクスターン
float フロート
for フォー
goto ゴートゥー
if イフ
int イント インテ,インテジャ
long ロング
register レジスタ
return リターン
short ショート
signed サインド
sizeof サイズオブ
static スタティック
struct ストラクト
switch     スイッチ
typedef タイプデフ タイプデファイン
union ユニオン うにおん
unsigned アンサインド
void ボイド
volatile ボラタイル,ボラティル バラトル
while ホワイル
0173デフォルトの名無しさんNGNG
>>169
揮発性 volatile
0174memNGNG
ポインタについて今勉強しているのですが、
今読んでいる本のところで
float balance[10][5];
float *p;

p=(float *) balance; ←←
*(p + (3*5)+1)

←←の所がよくわかりません。
float *(balance);
でわおかしいのですか?
基本的なことで申し訳ないのですが、
どなたかよろしくお願いいたします。
0175デフォルトの名無しさんNGNG
>>174
専用スレがあったぞ
http://pc3.2ch.net/test/read.cgi/tech/1033365088/
0176デフォルトの名無しさんNGNG
>>174
型キャストでス・・・・・・・
0177デフォルトの名無しさんNGNG
C言語で putc()関数とgetc()関数を使って、
バイナリファイルのコピーを行っているのですが、
コピー後のファイルの末尾にゴミ(0xff)がついてしまいます。

これが付かないようにするにはどうすれば良いんでしょう
0178デフォルトの名無しさんNGNG
>>177
多分 EOFのゴミです。if (feof(fp)) を使って EOFをスキップすれば
いいはず。
0179デフォルトの名無しさんNGNG
>>177
スマソ。feof(stdin)だね。
0180デフォルトの名無しさんNGNG
>>178==179
EOFをスキップするように書き換えたらうまくいきました。
ほんとうにありがとうございました
0181デフォルトの名無しさんNGNG
>>180
ちなみに getc()もEOFを返すことができるので、int型の変数に読み込み、
if ((i = getc()) == EOF) でスキップすることもできる。これなら feof()は
必要ない。

char型の変数に読み込むとうまく行かないので注意。
0182デフォルトの名無しさんNGNG
int max(int x,int y)
を関数値の型を書かないとint型と見なされてしまうそうなんですが、本当でしょうか?
また、なぜint型と見なされるのでしょうか?
お願いします。
0183デフォルトの名無しさんNGNG
char 型の配列を double 型の配列に変換するにはどーしたらいいですか
0184デフォルトの名無しさんNGNG
for(i=0;i<N;i++)darray[i]=carray[i];
0185デフォルトの名無しさんNGNG
>>182
ANSI-C以前のCがそうだったから。
0186デフォルトの名無しさんNGNG
>>183
↓これじゃだめなの?

void main(void)
{
char c[10];
double d[10];
int cnt;

for ( cnt=0; cnt < 10; cnt++ )
{
d[cnt] = (double)(c[cnt]);
}
}
0187デフォルトの名無しさんNGNG
やっぱそれしかないみたいですね・・・
どうもでした
0188デフォルトの名無しさんNGNG
stdlib.hをインクルードして、atofを使えばいいんじゃないの?
0189デフォルトの名無しさんNGNG
ANSI以前からの決まりだったんですか。ありがとうございました。
0190デフォルトの名無しさんNGNG
>>188
ダウト。atofはchar *からdoubleへの変換では?
0191デフォルトの名無しさんNGNG
>>186
ダメ。




mainの戻り値はint
0192デフォルトの名無しさんNGNG
>>191
そういう本題とズレたことはやめた方が・・・
誰か(オレモナー)が突っ込むと長くなるし。
0193デフォルトの名無しさんNGNG
>>192
突っ込め突っ込め。議論は活発な方がよい
0194デフォルトの名無しさんNGNG
a[0],a[1].a[2],a[3],a[4],a[5]
な配列を
a[3],a[4],a[5],a[0],a[1].a[2]
に入れ替える効率のいい方法を教えてください
0195デフォルトの名無しさんNGNG
>>194
まずはその部分がボトルネックになっているかを調べろ。
0196デフォルトの名無しさんNGNG
>>194

1.バッファを用意する
2.ループで条件を付けてa[i]をバッファに代入
3.バッファをa[]へコピー。

環境依存で型が分かればそれ以外も無くはない。
0197デフォルトの名無しさんNGNG
安直に考えるとこうだが
TypeOfA a[6];
int i;
for (i = 0; i < 3; i++) {
  TypeOfA t = a[i];
  a[i] = a[i + 3];
  a[i + 3] = t;
}
0198デフォルトの名無しさんNGNG
展開しろ。
0199デフォルトの名無しさんNGNG
a[1].a[2]?
0200200NGNG
200
0201デフォルトの名無しさんNGNG
>>199
突っ込みが鋭いな。
漏れは全然気づかなかたよ(w
0202デフォルトの名無しさんNGNG
デバッグすると
「ハンドルされていない例外はgrcve.exeにあります:
0xC0000005:Access Violation。」
という表示が出ます。
どういう意味なのでしょう?
それに、どうしたらバグがとれるのでしょうか?
0203デフォルトの名無しさんNGNG
>>202
とりあえず確保した領域を越えて書き込んでいないか確かめろ

char array[5];
array[100]='a';
とかな。
0204デフォルトの名無しさんNGNG
>>202
不正なアドレスを参照しようとした。
不正なアドレスに書き込みしようとした。
メモリを2回解放した。
ハンドルを余分に解放した。
のどれかと思われ
0205202NGNG
領域を広くするとバグがなくなりました。
ありがとうございます
0206デフォルトの名無しさんNGNG
>>205
uwa〜、怪しい。
ちゃんとどこが悪いのか掴んだんだろーな。
たまたま、動いてるだけかも知れんぞ。
0207デフォルトの名無しさんNGNG
>>205

sz = 100;
p=malloc(sizeof(sz));

こんなことしてないだろうな?
0208デフォルトの名無しさんNGNG
>>206 同意
>>205 それをバグがなくなったとは思うのは
気が早いと思われ。
0209デフォルトの名無しさんNGNG
ありゃ、新スレ来てみたら、もう200超え。
お世話になりマウス。m(^_^)mペコ。
0210デフォルトの名無しさんNGNG
文字列ポインタを数値に変換するにはどうしたらいいの?
strtokで数値でできた文字列を分割したあと
数値の入れ方がわからないんだけど誰か教えて下さい.
0211デフォルトの名無しさんNGNG
>>210
意味が良くわからないのだが、printf("%p", pointer);ってことか?
0212210NGNG
すいません.
数値で出来たテキストファイルを数値配列に読み込み
計算をしたいと言う意味です.
0213デフォルトの名無しさんNGNG
sscanf
0214デフォルトの名無しさんNGNG
数値変数 = atoi(文字列へのポインタ);
なんじゃないのか?
数値変数 = (数値変数)文字列ポインタ;
なのか??
0215デフォルトの名無しさんNGNG
>文字列ポインタを数値に変換する
っていうのがいまひとつ分からんが、
↓こんな感じかい?

char *tok;
int num;

tok = strtok(str, sepa);
num = atoi(tok);
0216デフォルトの名無しさんNGNG
普通はatoi,atol系使うよな。
0217210NGNG
こんな初歩的な質問にまで答えていただいて
ありがとうございます.
早速やってみます.
0218210NGNG
再度すいません.
下のソースはエラーが出るんですが何がいけないですか?

while(fgets(buf,1000,fp1)!=NULL){
 p=strtok(buf," ");
 data[a][b]=atof(p);
  do{
   b++;
   p=strtok('\0'," ");
   if(p){
   data[a][b]=atof(p);
   }
  }while(p);
 a++;
}
0219デフォルトの名無しさんNGNG
>>218
どこでどういうエラーが出るのかくらい書いたら?
0220デフォルトの名無しさんNGNG
>p=strtok('\0'," ");
これどーなのよ。
第一引数は、文字列でしょ。'\0'は、NULLだべ
0221デフォルトの名無しさんNGNG
PC-UNIX上で動く画面制御のライブラリってないんでしょうか
カーソル移動したり、画面クリアするやつなんですけど。
0222210NGNG
p=strtok('\0'," ")
のところでエラーが出ます.
本で見たらこうなってたのでやってみました.
ただファイルへの書き込みではうまくいくんですけど.
0223デフォルトの名無しさんNGNG
>221
ライブラリじゃないですが、↓こんなのどうでしょ。ソースコードつき
なので、さんこうになるのでは?
http://www2.plala.or.jp/mita/download/hi/info.html
0224デフォルトの名無しさんNGNG
>>221
cursesをキーワードに検索すべし。
0225デフォルトの名無しさんNGNG
>>222
その本がC言語を主題として書いてるのなら、捨てたほうがいいと思う。
0226210NGNG
なんかそんな気がしてきました.
それでエラーの位置なのですが,

while(fgets(buf,1000,fp1)!=NULL){
 p=strtok(buf," ");
 data[a][b]=atof(p);
  do{
   b++;
   p=strtok('\0'," ");
   if(p){
   data[a][b]=atof(p);ここでエラーになります.
   }
  }while(p);
 a++;
}
何がいけないのですか?
0227220NGNG
自爆しましたぁ〜
strtok('\0'," ");
の第一引数のNULLは、「次のトークンを探す」場合にそうしてするみたい。
m(__)m
0228210NGNG
じゃあ何でエラーになるのでしょうか?
0229デフォルトの名無しさんNGNG
>>227
http://www.catnet.ne.jp/~kouno/c_faq/c5.html#13
0230デフォルトの名無しさんNGNG
>>226
strtok()は、トークンが見つからないと、NULLを返すので、
atof(NULL)
となってしまうので良くないのでは?
0231デフォルトの名無しさんNGNG
strtokの第一引数はポインタ。
strtok('\0'," ");
ではint型の '\0' を第一引数として渡しているので間違い。

strtok(0, " ");
か
strtok(NULL, " ");
に変更すべし。
0232230NGNG
あぁ、また自爆だぁ〜
if(p)があるから、atof(NULL)とはならないのかぁ〜〜〜〜〜〜。m(__)m
にしても・・・、strtok()の結果って、ホントに数字の羅列になってるのかな?
データの中に、空白文字が複数連続して書かれてあったらどうなるんだろ?

スレ汚してごめんなさい。m(__)m
0233 NGNG
>>226
aかbがdataのサイズを超えているのではないかな?
どう見ても b = 0 が抜けているが。
つーか、なんでどういうエラーなのかを言わんのだ?
0234デフォルトの名無しさんNGNG
>>226
コンパイルエラーだったら怒るぞ
0235210NGNG
エラーの内容は
「?????のメモリが????を参照しました.
メモリがwrittenになることが出来ませんでした.」
です.
自分でもいろいろやってみるのですが,エラーなんです.
教えてください.
0236デフォルトの名無しさんNGNG
>>235
>>233さんのいってることは確認したかい?
0237デフォルトの名無しさんNGNG
>   p=strtok('\0'," ");
何したいんだ?
0238デフォルトの名無しさんNGNG
×  p=strtok('\0'," ");
○  p=strtok(p," ");

誰も突っ込まんから一応突っ込んでおく。
whileが無限ループになってるからいつかはエラー出るだろうなあ。
0239210NGNG
b=0は宣言のときに書いてあります.
それでただ読み込んでファイルに書き込むことは出来ました.
よって読み込みの段階での間違えは無いと思います.
つまりatofのところ(226で書いたところ)でうまくいかないみたいです.
何が間違っているのでしょうか?
0240デフォルトの名無しさんNGNG
>>239
で、dataはどのくらいのサイズ設定してあるんだ?
仮にdata[10][10]としてあったときに、b=10のときエラーになることくらいは分かってるよね?
10*10と仮定すると、
if( a < 10 && b < 10 ){
   data[a][b]=atof(p);ここでエラーになります.
}
ってやれば回避できる。
0241デフォルトの名無しさんNGNG
>>239
人の話きけよ…
0242210NGNG
241さんは238さんでしょうか?
すいません.
書き込んでいる最中に増えていました.
そのとおりにやってもエラーが出ます.
あとサイズ設定はかなり大きくとっているので(300,100)大丈夫です.
0243デフォルトの名無しさんNGNG
>>210
俺がstrtokで作るとこうなる・・・かもしれない↓
  for (a = 0; fgets (buf, sizeof (buf), fp1) != NULL; a++) {
    char *p = strtok (buf, " ");
    for (b = 0; p != NULL; b++) {
      data[a][b] = atof (p);
      /**/printf ("(%d,%d) = %g\n", a, b, data[a][b]);
      p = strtok (NULL, " ");
    }
  }

しかし、バグはバグとして、そもそもsscanfを使わない理由は?
0244デフォルトの名無しさんNGNG
おっとすまん、サイズが決まってなければsscanfでは簡単にはできないか
0245243=244NGNG
そういえば、最初
#include <stdlib.h>
をやりわすれたのにコンパイルエラー出なかったのが不思議。
(結果は出鱈目だった)
0246デフォルトの名無しさんNGNG
文字列の中身は?
0247デフォルトの名無しさんNGNG
えっスペース区切りじゃないの
0248デフォルトの名無しさんNGNG
まーそもそも、data[a][b]というデータ構造があやしいのだが
(サイズが不定なのか固定なのかわからん)
0249デフォルトの名無しさんNGNG
bがインクリメントされっぱなしのような気がするが?
0250デフォルトの名無しさんNGNG
何で、do{〜}while(p);とするのか・・・
while(p){〜}でいいじゃん。
pを確認してから、strtokを取るってわかりやすいし。結構行数はしょれる。

>○  p=strtok(p," ");
何でpとpなんだ?

b=0;の適当なところでの処理は必須。

' '半角スペースが2個連続している所とかは無いのか?
あれば、strtokに掛ける前に処理しておいた方が良いと思うが。

strtok(NULL, " ");がいいな。

全角スペースは混ざっていないよね?

 などなど
0251デフォルトの名無しさんNGNG
すいません。教えて下さい。
プログラムを実行して、WWW上のどこかに飛ばすにはどうしたらいいでしょうか?
初心者用のサイトは大方見たのですがドコも詳しく書いてなくて、
どなたか、お願いします。
0252デフォルトの名無しさんNGNG
RFCでIPの使用域について調べて、IP生成して、試しにping打って、getしてみて、
そこにサイトがあったら、飛ばせ。
0253デフォルトの名無しさんNGNG
>>251
printf("Location:どこか\n\n");

これをCGIとして実行。
0254デフォルトの名無しさんNGNG
> WWW上のどこかに飛ばすにはどうしたらいいでしょうか
何を飛ばすのか、そもそも「飛ばす」とはどんな処理・動作・結果を指しているのか?
具体的に書けや (#゚Д゚)ゴルァ!!
0255デフォルトの名無しさんNGNG
>>254
> 何を飛ばすのか
電波
0256251NGNG
>252-254
回答ありがとうございます。
言い方悪くてすいません。
exeを実行語、ヤフーなりgoogleなりIEが開いて表示する
って言うのをやりたいです。
>252
おもしろそうなので詳しく調べて見ます!!
>253
個人的に使いたいのでCGIは無理ですが、勉強になりました。
もしもCGIを使う事になったら使用させていただきます!!
>254
ごめんなさい(T_T
次からはもっと詳しく書かせていただきます!!
0257デフォルトの名無しさんNGNG
>>256
IEコンポーネントを使うことになるから、↓のすれがよさげ

IEコンポーネントを使い倒すスレ
http://pc3.2ch.net/test/read.cgi/tech/982930049/l50
0258デフォルトの名無しさんNGNG
>>256
最初の1回だけなら、
ShellExecuteでIEのフルパスと対象のURLを書けばイイかも
0259デフォルトの名無しさんNGNG
printfのフォーマット指定で「小数点以下の無効なゼロは表示しない」って無いんですか?
0.01fを%fでやると0.010000ってなっちゃいますよね?
0260デフォルトの名無しさんNGNG
>>259
%gは?
0261デフォルトの名無しさんNGNG
コンソールアプリとWindowsSDKをやるだけなんですけど、
VC++を買う必要はありますか?

今の環境はBCCに専用のエディタを組み合わせてます。
0262デフォルトの名無しさんNGNG
>>261
その今の環境でできないの?
0263デフォルトの名無しさんNGNG
>261
根性があれば必要ない
プラットフォームSDKはBCCに含まれてるから
がんばってMSDNライブラリに検索かけまくる
(抜けがあるけど・・・)
0264デフォルトの名無しさんNGNG
>>261
> VC++を買う必要はありますか?
ない

ウィンドウズプログラムの作り方
http://www.neco.nu/gohodoji/bccfaq/bccfaq.html#windowsprogram

# -Wオプションを付けるのを忘れるな
0265デフォルトの名無しさんNGNG
>>261
この辺りからリンクされているツールを使うと、BCCでも比較的
楽にWinアプリも作れると思う。
http://hi-tag.hoops.jp/prgmemo/cpp_try00.html
0266デフォルトの名無しさんNGNG
構造体で、
typedef struct test {
char test1[10];
char test2[10];
} test;

typedef struct value {
char test1[10];
char test2[10];
test test3[10];
} value;

として、

value a[10];
と宣言して、

a[0].test3[0].test1[0] = 'a';

というのは、できないのでしょうか?




0267デフォルトの名無しさんNGNG
メンバの命名は気をつけた方がいいとおもうが、べつにいいんじゃない?
0268デフォルトの名無しさんNGNG
あの、聞きたいんですけど。
VC++6.0で簡単なウインドウを作るプログラムを作ろうと思ったんですが、
新規作成→WIN32Application→新規作成→C++ソース、と普通にやって
#include<windows.h>をするとエラーがでます。エラーの場所はなんか
winnt.hというところに出ます。そんな所いじってないのになぜでしょうか。
教えてください!
0269デフォルトの名無しさんNGNG
ふ〜ん。
教えて欲しいくせに「C言語なら俺に聞け」スレに書き込むのか。
ふ〜ん。つまらんネタだな。
0270デフォルトの名無しさんNGNG
↑
?
0271デフォルトの名無しさんNGNG
>>268
とりあえずこちらへ
http://pc3.2ch.net/test/read.cgi/tech/1022499000/
0272デフォルトの名無しさんNGNG
char (*Numbox)[MAX2];

初期化するにはどうしたらいいでしょうか?
0273デフォルトの名無しさんNGNG
>>272
char [MAX2] の先頭を指すポインタだから

 char hoge[MAX2];
 Numbox = hoge;
0274デフォルトの名無しさんNGNG
>>272
char (*Numbox)[MAX2] = {0};

最近はなんとかっつー規定でゼロクリアしてくれるぞ。
駄目ならsizeofでmemsetだ
0275272NGNG
NULL=0?
C言語だけですっけ?
0276デフォルトの名無しさんNGNG
> 最近はなんとかっつー規定でゼロクリアしてくれるぞ。
ANSIのことか?
0277デフォルトの名無しさんNGNG
274はNumboxが配列だと思っているのかもな
0278デフォルトの名無しさんNGNG
>>273-274
おいおい、何言ってんだ?
配列へのポインタだぞ。書くとしたら、
char (*Numbox){MAX2] = NULL;
char (*Numbox){MAX2] = &hoge;// <- char hoge[MAX2];
char (*Numbox)[MAX2] = (char (*)[MAX2])malloc(10*sizeof(char (*)[MAX2]));
だろうが。
0279デフォルトの名無しさんNGNG
ミスった。3つ目は
char (*Numbox)[MAX2] = (char (*)[MAX2])malloc(10*sizeof(char [MAX2]));
だな。
0280デフォルトの名無しさんNGNG
char abc=100;
const char *a=abc;

*a=10;

OK?
0281デフォルトの名無しさんNGNG
>>280
const char *a = &abc; ・・・・
0282273NGNG
>>278
あぁ、& が要るわ。失敬。
0283デフォルトの名無しさんNGNG
>>282
&が要るかどうかはhogeの型によるだろ。たとえば
  char hoge[10][MAX2];
だったら &は不要。
0284283NGNG
あ、俺がよく読んでなかっただけだわ。
char hoge[MAX2];
と最初に書いてあった。ごめん。
0285デフォルトの名無しさんNGNG
(´-`) oO(流行ってるのかな… 自己ツッコミ)
0286デフォルトの名無しさんNGNG
(´-`) oO(みんなせっかちなんだよ。「早飯早糞早レス」プログラマに不可欠(ってどっかのスレで言ってた)
0287デフォルトの名無しさんNGNG
(´-`) oO(流行ってるのかな… このキモイ顔文字)
0288デフォルトの名無しさんNGNG
教えて下さい。
ファイルのステタースを確認したいのですが、
使い勝手のいい関数はあるでしょうか?
用途なんですが、ファイルに書き込む作業で、多人数が同時に
アクセスする可能性があるので、ファイルロックのような
機能を持たせたいと考えております。
どなたか教えて下さい
0289デフォルトの名無しさんNGNG
厨デス

slen=strlen ( argv[2] );
と宣言したとして、
その確保した先頭のアドレスに
char ZERO = '0';
を入れたいんですけどドウスレバヨロシイノデショウカ?
0290デフォルトの名無しさんNGNG
>>289
argv[2][0] = ZERO;
0291289NGNG
>290サソ

アリが�d

コソパイルできたけどcore dump吐キヤガッタ
ヽ(`Д´)ノ ウワァァン!!

ガンバッテミマス
0292デフォルトの名無しさんNGNG
>>288
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/flock.2.html
ただ、ファイルロックを行わないツールで書き込まれたらどっちみちアウト
0293デフォルトの名無しさんNGNG
>>292
解凍ありがとうございます。
私もFlockには目をつけていたのですが何故か使えません。
UNIXではないんですが…
ヘッダーが無いとVCがおっしゃるので。
ショートカットのリンク作るやつでやろうかなとか考えてます。
ありがとうでした。
0294デフォルトの名無しさんNGNG
>>292
linuxのflock()って排他ロックしても書き込まれちゃうの?

>>293
「UNIXではない」から使えないんでしょ。Winなら
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_lockfileex.htm
これかな。
0295ポチョムキンNGNG
1週間ほど前、こちらでgnuplotを使ってリアルタイムにプロットする方法を教えていただいた者なんですが、おかげさまでpopenを使ってデータをGnuplotに遅れるようになりました。しかし、gnuplotにエラーが
生じたときロボット制御の画面が崩れてしまいます。bash等の場合の
標準エラー出力の解決法はwebで見かけたのですが、gnuplotでは
うまくできませんでした。
gnuplotの標準エラーを出力させないようにするにはどうしたら
よいのでしょうか?

どなたかアドバイスしていただけると助かります。
よろしくお願いします。
0296デフォルトの名無しさんNGNG
>>296
popen("(gnuplot > /dev/tty) >& /dev/null", "w");
じゃダメかい?
0297デフォルトの名無しさんNGNG
自分でforkして、dupって、execしたら?
0298デフォルトの名無しさんNGNG
だれか教えてください!
#include<stdio.h>
#include<stdlib.h>
int main()
{
char file[64];
char buf[256];
FILE *fp;

if(null==(fp=fopen("test.txt","w")))
{
printf("File Open Error!\n");
exit(1);
}
else
{
buf[0]='1';
while(buf[0] !='0')
{
printf("文字列を入力してくれ_");
gets(buf);
fputs(buf,fp);
fputs("\n",fp);
}
}
fclose(fp);
}
とVC++でコンパイルしたんですがエラーになってできません。
デバッグ情報みてもよく意味が分かりません。
どなたか分かる人いませんか?
0299デフォルトの名無しさんNGNG
>>298
298.c
298.c(9) : error C2065: 'null' : 定義されていない識別子です。
298.c(9) : warning C4047: '==' : 間接参照のレベルが 'int ' と 'struct _iobuf *' で
異なっています。

そのまんまだと思うけど…
0300288NGNG
すみませんどのように修正すればちゃんとコンパイルできるんでしょうか?
超初心者ですみません・・・
0301デフォルトの名無しさんNGNG
NULL
0302298NGNG
ありがとうございましたちゃんとできました感謝〜
0303ポチョムキンNGNG
解決しました。お騒がせしました。
0304ポチョムキンNGNG
>296
ばっちりでした。ありがとうございました。
0305デフォルトの名無しさんNGNG
Windowsのコンソール用のアプリケーション用の画面制御ライブラリ
というのはありませんでしょうか(できればフリーで)
0306デフォルトの名無しさんNGNG
>>305
エスケープシーケンスでいいやん
0307デフォルトの名無しさんNGNG
>>306
Windows2000のDOSプロンプトでは使えません
0308デフォルトの名無しさんNGNG
>>307
つかえるぞよ
0309デフォルトの名無しさんNGNG
>>308
何か常駐ソフトが必要なのでは?ansi.sysとか。
0310デフォルトの名無しさんNGNG
win2kのDOSプロンプトは使えるけど、
win2kのコマンドプロンプトでは使えない、
と言う話では無かろうな。
0311デフォルトの名無しさんNGNG
すくなくともVCから立ち上がるDOSプロンプトでは使えません
0312デフォルトの名無しさんNGNG
WinNT系では Win32 プログラムからエスケープシーケンスは使えない。
代わりに Console API を使う必要あり。
16bit プログラムなら ansi.sys を組み込めば使用可能。
って、数日前にもどっかで書いたような。
0313デフォルトの名無しさんNGNG
cygwinでcursesを。
いや使えるかどうかしらんけど、
vimとか動いてるからたぶん使えるんだろう。
0314デフォルトの名無しさんNGNG
>>305
BCC32の付属ライブラリじゃだめなのか?
エディタ制作中の初心者がいろいろ使っていたぞ。
0315デフォルトの名無しさんNGNG
ansi.sysってどうやて組み込むの?
0316デフォルトの名無しさんNGNG
>>294
linuxのflockはflockをよんだ時に、ほかのプロセスが排他ロックをしていたらロックが解除されるまで待つというだけ。
flockを呼ばずに書き込みを行えば書き換えられてしまう。
ひとつのプログラムからしか書き換えないようなファイルに対しては有効。
0317デフォルトの名無しさんNGNG
>>177でバイナリファイルのコピーの質問をしたものですが

EOFをスキップするように書きかえると0xffをEOFと誤診しているような
非常に怪しい挙動を起こすのですが、何かいい方法は無いでしょうか。
0318デフォルトの名無しさんNGNG
>>317
きちんとint型でうけとっているか?
0319デフォルトの名無しさんNGNG
>>318
charで受け取っていたのが原因でした。
初歩的なミスに回答して頂いて有難うございました。
0320デフォルトの名無しさんNGNG
>>317
>>181

補足すると、EOFはchar型では表せないint型の定数。正しくはint型という
わけではないが、getchar()がint型を返すため、EOFもint型だと考えれば
便利。
0321デフォルトの名無しさんNGNG

●●●●●●●●「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 非OO 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   )
  |   |/        ゚/ ̄ ̄_ヽ         ⊂〔〔 非OO 〕
0322デフォルトの名無しさんNGNG
>>321
OO?
0323デフォルトの名無しさんNGNG
>>322
Object Orientedかなあ?なんでCスレに?
0324デフォルトの名無しさんNGNG
ム板のほとんどのスレにコピペあり
0325デフォルトの名無しさんNGNG
覚えたら即書こう

c="Asadayo"[2];

c=i"Asadayo";
0326デフォルトの名無しさんNGNG
(ノ゚Д゚)朝だよ
0327デフォルトの名無しさんNGNG
グローバル変数,グローバル関数には,先頭に
gnum;
gSeachcat();

とかでいいんでしょうか?
0328デフォルトの名無しさんNGNG
グローバル関数ねぇ・・・
0329デフォルトの名無しさんNGNG
グローバル関数ねぇ・・・
0330デフォルトの名無しさんNGNG
素股ねえ・・・
0331デフォルトの名無しさんNGNG
C言語はなんでこんなに未定義が多いんですか?
0332デフォルトの名無しさんNGNG
>>331
本当のところはわからんけど
現在の仕様で未定義とされてる部分を、エラーからの復帰方法とか細かく定めたら、
それにスマートに対処する方法がない環境では複雑になったり遅くなったり、
全く対応できなかったりするからじゃなかろうかと
0333デフォルトの名無しさんNGNG
>>332
ああなるほど。
様々な環境で使えるようにするためにはそうするしかないわけか。
0334デフォルトの名無しさんNGNG
意味のある未定義なんかない。
0335ネターリNGNG
88 - 66 = 11

式が成立しません!
これに手を加えず成立させるにはどうすればいいれすか?
0336デフォルトの名無しさんNGNG
*(int*)(88-66)=11
0337デフォルトの名無しさんNGNG
#if 0
88 - 66 = 11
#else
(void)0
#endif
;
0338デフォルトの名無しさんNGNG
>>335
せめて 88 - 66 = 22 とかけよ・・・
0339デフォルトの名無しさんNGNG
>>335
88 - 66 = 11 + 11
手は加えてませんよ。












11を加えたんです。
0340デフォルトの名無しさんNGNG
struct A
{
A const& operator -( int ) const{ return *this; }
bool operator =( int ) const{ return true; }
};

A() - 88 - 66 = 11

C++ならなんとか・・・なるかな?
0341デフォルトの名無しさんNGNG
#define 88 77
88 - 66 = 11
0342デフォルトの名無しさんNGNG
>>341
記号定数は英字か_で始まらないといけないんだYO!
0343デフォルトの名無しさんNGNG
それ以前に = は代入だから成立してないよ
0344デフォルトの名無しさんNGNG
#define COMMENT(expr) /* expr */
COMMENT(88 - 66 = 11)
0345デフォルトの名無しさんNGNG
>>344
素直に /* 88 - 66 = 11 */ じゃだめ?
0346デフォルトの名無しさんNGNG
ワラタ
0347デフォルトの名無しさんNGNG
>>345
ソウイエバソウダネ
0348デフォルトの名無しさんNGNG
main関数から
returnで抜けるのと、
exitで抜けるのでは、
なにか違いがあるんでしょうか?
0349デフォルトの名無しさんNGNG
>>348
ないよ
0350デフォルトの名無しさんNGNG
>>348
違いはない。
http://www.catnet.ne.jp/kouno/c_faq/c11.html#16
0351デフォルトの名無しさんNGNG
>>348
ちょっとある。
exit()は一応関数コールなので、スタックがぎりぎりだとあぼ〜んする
ことあり。と言ってもほとんどそんな事は皆無だが。
0352デフォルトの名無しさんNGNG
>>348
つい最近、同じような質問を見た記憶が。
035310000000NGNG
あいさつもなしに質問なんですがCでフォルダを指定して
そのフォルダに入っているファイルの名前をすべて挙げるには
どうすればいいでしょうか?
0354デフォルトの名無しさんNGNG
>>353
Cの標準関数にはフォルダにアクセスする関数はない。
OS依存ではいくつか方法はあるけど、私には君のOSはわからない
03551000000NGNG
>>354
あいさつも無しにお礼です、ありがとう。
答えてくれて。
私はwin98SEだけど基本的にwin全般での方法はありませんか?
NTとか3.2とかはいいんですけど・・
0356デフォルトの名無しさんNGNG
>353
popen("ls", "r")もしくはpopen("dir", "r")でがんがれ。
0357デフォルトの名無しさんNGNG
プログラミングの勉強したいんですけど。
まとめてください。、何を詠んだあと何を読めばいいですか?
勉強方法の王道でおねがいします
0358デフォルトの名無しさんNGNG
>>357
そんな大仕事をおまえのためにやれと?
0359デフォルトの名無しさんNGNG
すいません・・でも・・有名な。。本の紹介でいいんで。。
まとめを。スレの1に書いといてくれれば。もっと、いいです、、
0360デフォルトの名無しさんNGNG
>>359
お勧めの書籍スレがあるから、そこに書いてある本を
かたっぱしから読めばいいかも。
0361100000NGNG
>>356
あいさつも無しに、うれしいです。
調べてみたところ私には全くの未知の関数でしたので
勉強してみます、パイプという言葉をCの中で知りませんでしたし。
それでわ。
0362デフォルトの名無しさんNGNG
>>357
そういう質問してる時点で、王道から激しく外れてるが。
0363デフォルトの名無しさんNGNG
>>359
> すいません・・でも・・有名な。。本の紹介でいいんで。。
スレの1に書いてあることも読めん奴はいくら本を読んでも
身に付かないと思うが...

 Cプログラマ必読 ・プログラミング言語C(通称 K&R)
 http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
 推薦図書/必読書のためのスレッド PART6
 http://pc3.2ch.net/test/read.cgi/tech/1033207156/
0364デフォルトの名無しさんNGNG
>>361
だまされてるよ。
0365デフォルトの名無しさんNGNG
>>364
だね。パイプじゃなくてバイブだよ!>>361
0366356NGNG
>>364
ruby坊は去れ
0367デフォルトの名無しさんNGNG
ruby基地外に「Perlについての質問箱」が潰されたよ。
ひどいもんだ。見てきてみ。
0368デフォルトの名無しさんNGNG
ぷっ
くやしいか?ああ?
0369デフォルトの名無しさんNGNG
お前の居場所はあのPerlスレしかなかったんだな。
可哀想な367
はやく自殺するなりなんなりしてくれ。
0370DefaultNGNG
C言語でキーボードの入力を、別の処理をしながら逐次受け付けるように
するにはどうすればいいのですか?


0371デフォルトの名無しさんNGNG
>>370
またその質問かよ。
それに環境書けって言われてただろ。
進歩のない奴はだめだ。
0372デフォルトの名無しさんNGNG
>>370
別の処理をしながら時々キーボードの入力をチェックする
0373DefaultNGNG
OSはLinuxで、コンパイラはgccです。
すみませんでした。
スレ立てるまでも無い・・・スレにも一応書いたのですが。
よろしくおねがいします。
0374DefaultNGNG
>>372
キーボードの入力のチェックってどうやるんですか?
0375デフォルトの名無しさんNGNG
>>373
GUI使ってるのか、使ってないのかも書くように。
使ってるのなら、そのライブラリもな。
0376DefaultNGNG
たびたびすいません。
えーと、GUIを使ってて、Xlibを使ってます。
HPを調べてマウスの使い方は分かったのですが、キーボード
はわかりませんでした。
0377あNGNG
>376
そっか、わからなかったか。
、、、で?
0378デフォルトの名無しさんNGNG
>>377
ruby坊氏ね
0379あNGNG
>377
確かに仕事で今はruby使ってるが。
唐突にそんなこと言われても
ムカツクよりも「
なんだこいつ??」
みたいな感じだな。
0380あNGNG
あ、自分を批判してもーたw
0381デフォルトの名無しさんNGNG
>>376
Xlib キーボード
というキーワードをgoogleにかけたら
http://x68000.startshop.co.jp/~68user/xprogram/xlib-2.html
なんてものがでてきたが?

にしても、x68000とは。
0382デフォルトの名無しさんNGNG
>>376
Xlibならキーチェックする方法あるだろ。
それ使えばいいじゃん。
0383デフォルトの名無しさんNGNG
>>379, >>380
あの有名なruby基地外によく似てるがな。
0384デフォルトの名無しさんNGNG
GCCのソースファイル見てるんだが、厨の俺にはどうしてもわからん記述がある。
iovfsscanf.cの中に

extern u_long strtoul __P((const char*, char**, int));
extern long strtol __P((const char*, char**, int));

こんな宣言があるんだが、これってコンパイラ通るのか?
0385DefaultNGNG
>>381
欲しかった情報にぴったりです。そのサイト。
そこにあるソースを参考にして、いろいろやってみたいと思います。
ありがとうございました。
0386デフォルトの名無しさんNGNG
>>384
__Pって、何かのマクロ?
0387デフォルトの名無しさんNGNG
放送禁止マクロです
0388デフォルトの名無しさんNGNG
#ifdef 〜〜
#define _P(x) (x)
#else
#define _P(x) ()
#endif
とかやってんじゃないの?
0389デフォルトの名無しさんNGNG

●●●●●●●●恒例・「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
http://pc3.2ch.net/test/read.cgi/tech/1032985885/l50
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 非OO 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   )


0390デフォルトの名無しさんNGNG
ANSI-Cなプロトタイプ宣言に対応していないオールドタイプなコンパイラの
ための対策かな
0391デフォルトの名無しさんNGNG
    ∧∧
   /⌒ヽ)
  [ 祭 _]
  三___|∪
  (/~∪
  三三
 三三
0392デフォルトの名無しさんNGNG
やっぱruby基地外が出没してるようだな。



0393デフォルトの名無しさんNGNG
gccなら、このマクロのことじゃねぇの?
stdio.h

#ifndef __P
#if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
#define __P(args) args
#else
#define __P(args) ()
#endif
#endif /*!__P*/
0394デフォルトの名無しさんNGNG
>>387 ワラ
0395ageNGNG
mainなんかなくてもいいじゃん!
0396デフォルトの名無しさんNGNG
>>395
そりゃそうだ。スタートアップスクリプトを書き換えて好きな関数から呼び出そう!
0397デフォルトの名無しさんNGNG
mallocでメモリ確保したいんですが、
mallocで確保できる容量の制限とか、
デカイ容量確保すると危険とかってあるんでしょうか?
0398デフォルトの名無しさんNGNG
そういうことは自分の処理系に訊いてくれ。
DOSなら、普通mallocで64KB以上のメモリは確保できないし
それ以下でも失敗することがある。
0399デフォルトの名無しさんNGNG
>>397
失敗したらNULLが返るだけだからきちんと戻り値をチェックすれば問題ないと思うけど。
0400デフォルトの名無しさんNGNG
400get
0401デフォルトの名無しさんNGNG
すいません・・・マクロってどんな意味ですか?
0402デフォルトの名無しさんNGNG
おっきい
0403デフォルトの名無しさんNGNG
>>401
プリプロセッサのdefineディレクティブで定義されるもののことをマクロというようだ。
正式な言葉なのかただの慣習なのかはしらんが。
0404401NGNG
レスさんくすー
0405デフォルトの名無しさんNGNG
>>399
malloc() したときに, 確保できたものとして NULL を返さないような
環境もみたいだけど(自分では試してない), そういう環境では
もっと他の対策を取らないといけないのかも.
0406デフォルトの名無しさんNGNG
>>405
ハア?
0407デフォルトの名無しさんNGNG
>>405
ヲイヲイ、そんな危険な仕様のmalloc()なんか使い物にならないぞ。
捨ててしまえ。
0408デフォルトの名無しさんNGNG
>>407
Linuxなんかそうだよ。

あまりに巨大なサイズを要求するとNULL返すけど、
小さい場合は触った瞬間にSEGVであぼーん。

よーするに、アドレス空間が使えることは保証するけど、
それに物理的な裏付けがあるという保証はない、と。
0409405NGNG
いわゆる overcommit だと思う.
私なりの現状の理解では overcommit を認めるように実装された mmap(2) とか sbrk(2) で
実装された malloc(3) では, (もし malloc が確保した領域がちゃんと使えることを
保証するような実装になってなければ) malloc 時には NULL を返さないけど, その領域に
アクセスしたところで, 天罰が下る, ということで OK ?

私はこの辺の議論をする知識が欠けているから, みんなでこのスレなりの
議論をしてくれ.

ttp://search.luky.org/fol.2001/msg00337.html
ttp://home.jp.freebsd.org/cgi-bin/thread?mesid=%3c199910040604%2ePAA01232%40bluemoon%2eelec%2eryukoku%2eac%2ejp%3e
0410デフォルトの名無しさんNGNG
>>408-409
冗談だろ?
それでは使えないじゃないか。
0411デフォルトの名無しさんNGNG
h抜き厨うざいな・・・
http://search.luky.org/fol.2001/msg00337.html
http://home.jp.freebsd.org/cgi-bin/thread?mesid=%3c199910040604%2ePAA01232%40bluemoon%2eelec%2eryukoku%2eac%2ejp%3e
0412デフォルトの名無しさんNGNG
>>409 のリンクより。
> Linux 2.2以降では、/proc/sys/vm/overcommit_memory に1を書き込むと
> overcommit動作をするようになりますが、デフォルトではovercommitしません。
ほう。知らなかった。
まぁ、そんなにでかいメモリ使うアプリ書いたこともないけど。
041388 - 66 = 11NGNG
誰も答えがわからなかったか? おまえら!!

モニターをひっくり返せアホ!


11 = 99 - 88


0414デフォルトの名無しさんNGNG
>>413
エラー:左辺値が必要
0415デフォルトの名無しさんNGNG
ははは、バカだなぁ。413も414も。

11をひっくり返したら、LLになるだろ。
LL=99-88
になるから、全く合法。
(変数宣言はねーねどな。)
0416デフォルトの名無しさんNGNG
    ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´Д`)/< センセー、 ; がないので成立しません。 BASICでもやってろ!
 _ / /   /   \____________
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
0417デフォルトの名無しさんNGNG
>>413
手を使わずにモニターひっくり返すのは結構難しいですね。




自分が上下逆に見ればいいだけでは?
どっちにしろコンパイルできないが。
0418デフォルトの名無しさんNGNG
>416
335によれば、
>88 - 66 = 11
>式が成立しません!
である。「式」として成立するかはセミコロンによらない。
たとえば、if( LL = 99 - 88 )の括弧の中も「式」である。

ちなみにセミコロンが要るのは、式文。
>expression-statement:
>  expression(opt) ;
0419デフォルトの名無しさんNGNG
よしよし、あっちに積み木があるからあっちで遊ぼうね。
0420416NGNG
>>418
この部分が式であっても、その式を含む文を
完成するためにはセミコロンが不可欠になる
(逆さでは無理)という意図で書いたんだが、

なるほど確かに335に「式として成立」と書いてあるんだな。
出所不明なので 413-415 しか読んでなかった。
0421デフォルトの名無しさんNGNG
>>129
    ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´Д`)/< センセー、 ; がないので成立しません。 BASICでもやってろ!
 _ / /   /   \____________
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
0422デフォルトの名無しさんNGNG
↑C をはじめて知ってよっぽどうれしいんだな。
0423デフォルトの名無しさんNGNG
#include <stdio.h>
main()
{
int a,b;
for(a=0;a<10;a++){
for(b=0;b<a;b++){
printf("*\n");
}
printf("\n");
}
ちゃんとできません。おしえてください
0424デフォルトの名無しさんNGNG
>>423
最後の行に}をつけくわえる。

>>422
プ
0425デフォルトの名無しさんNGNG
APIってなんすか?
0426デフォルトの名無しさんNGNG
スレ違い。
API=アピ=アップルパイの略。
0427デフォルトの名無しさんNGNG
>>425
スレ違い
http://yougo.ascii24.com/gh/04/000481.html
0428デフォルトの名無しさんNGNG
scanf系は初心者にはお勧めできない、とよく聞くのですが
代替法を教えてくらさい。

int i;
scanf("%d",&i);
printf("%d",i);

としたときに i に文字列を入れられると怖いんです。
0429デフォルトの名無しさんNGNG
>>428
int i;
char buf[30];

fget(buf,sizeof buf,stdin);
i=atoi(buf);
printf("%d",i);

エラーチェックしたかったらstrtolなりsscanfなりを。
0430429NGNG
4行目はfgetじゃなくてfgets
0431デフォルトの名無しさんNGNG
聞けーーーー
0432デフォルトの名無しさんNGNG
じゃあ聞くけど、「未定義」「不定」 といったあいまいな部分
たとえば恒例の a=a++; などのやつな。
これらをきちんと動作定義しようという動きは無いのか?
それと、定義しないならしないで なぜWarningなりErrorなりを
コンパイルは吐かないんだ?

納得のいく説明しろ
0433デフォルトの名無しさんNGNG
a=a++; これは決まった処理するだろ
0434デフォルトの名無しさんNGNG
>>433
根拠は?
0435デフォルトの名無しさんNGNG
人から貰った関数の引数に double *&a というのがあるのですが
これってどういう意味なんですか?
0436デフォルトの名無しさんNGNG
それってC++じゃないの
0437デフォルトの名無しさんNGNG
>>432
未定義や不定に関しては、プログラムをどう書き直しても解決しないわけで、
Warningを出すとうるさいからじゃない?。

>>433
有名なC FAQを見ればわかるよ
0438デフォルトの名無しさんNGNG
>>436
C++スレで聞いたほうがいいのでしょうか?
0439デフォルトの名無しさんNGNG
>>433
> a=a++; これは決まった処理するだろ

またこれかよ。いいかげん覚えろ、ヴァカ。

>>432

> それと、定義しないならしないで なぜWarningなりErrorなりを
> コンパイルは吐かないんだ?

厨房は、C なんか使うなってことだ。
0440デフォルトの名無しさんNGNG
>435
(double*) (&a)と読めばわかるかも
0441デフォルトの名無しさんNGNG
int a; int *p = &a;
*p = a++;

警告の出せる処理系を見てみたいもんだ。
0442デフォルトの名無しさんNGNG
>>440
なるほどー。thxです。
0443デフォルトの名無しさんNGNG
>>437
未定義や不定の処理を修正すれば解決するだろ。

>>439
>> それと、定義しないならしないで なぜWarningなりErrorなりを
>> コンパイルは吐かないんだ?

> 厨房は、C なんか使うなってことだ。

答えになってないな。脳味噌入ってるか?
0444デフォルトの名無しさんNGNG
>>443
この話題いいかげん飽きた。
未定義でも自分で大丈夫だと思えば使えばいいじゃん。
誰も止めない。勝手にしろ。
0445デフォルトの名無しさんNGNG
> 未定義でも自分で大丈夫だと思えば

自分の使う環境で動作が確認されれば

だろ。
0446デフォルトの名無しさんNGNG
>>443
441は読んだか?
0447デフォルトの名無しさんNGNG
ま  た  未  定  義  か
0448デフォルトの名無しさんNGNG
C99に対応したコンパイラってありますか?
0449デフォルトの名無しさんNGNG
age
0450デフォルトの名無しさんNGNG
>>444
自分が大丈夫だと思っていれば、他人が大丈夫じゃないと思っていても
使っていいのか? ずいぶんと勝手な奴だな。協調性が無いんじゃないか?

>>446
全部出せとは言ってないよ。
0451デフォルトの名無しさんNGNG
動作未定義なコードを、それと解ってて放置する理由って
なにかあるんだろうか…
0452デフォルトの名無しさんNGNG
>>451
引継ぎ。
0453デフォルトの名無しさんNGNG
文句があるなら使うな。もしくは自分で好みの言語を作れ。
0454デフォルトの名無しさんNGNG
ビットフィールドで質問。

struct{
  unsigned char b1:1;
  unsigned int b2:1;
  unsigned long b3:1;
}BITS;

とかしたら、メモリイメージってどうなるんでつか?
あと、やっぱりBITS.b3はunsigned long型なんでつか?
よくわかんない。
0455デフォルトの名無しさんNGNG
なんか共用体と混同しているようだな。
0456デフォルトの名無しさんNGNG
>>453
C言語に限らず言語仕様に文句がないなんて、
良くわかってない初心者か、信者くらいなもんでしょう。
0457デフォルトの名無しさんNGNG
>>454 bit 数指定ね・・・
0458デフォルトの名無しさんNGNG
>>443
>> 厨房は、C なんか使うなってことだ。
> 答えになってないな。脳味噌入ってるか?

お前が、答えを読み取れないだけだろ ?
0459デフォルトの名無しさんNGNG
scanf("%d",&a);rewind(stdin);
っていうのは
改行キーを吸収してくれますか?
0460デフォルトの名無しさんNGNG
試せばわかるんじゃあ・・・・
0461デフォルトの名無しさんNGNG
その前に構造体のパディングが入る。
32bits マシン(int=long=32)と仮定すると、(□/■は1バイト)
■□□□ char (□はPADDING)
■■■■ int
■■■■ long
16bits マシン(int=16,long=32)と仮定すると、(□/■は1バイト)
■□■■ char, int
■■■■ long
となるだろう。
ビットフィールドは実装依存であり、(○/●は1ビット)
●○○○○○○○ かもしれないし、
○○○○○○○● かもしれない。
0462デフォルトの名無しさんNGNG
>>458
お前、文章読めるか? 答えになってないだろ。
答えが読み取れるというのなら言ってみろ。
どうせ、「お前には言ってもわからないよ」とか言い訳するのが関の山だろ。
0463 NGNG
fpBin = fopen("binary.txt","wb");
if( fpBin != NULL ){
 fwrite(buf,1,strlen(buf),fpBin);
fclose(fpBin);
}

書きこんだファイルがバイナリモードなのに,テキストファイルを見たら,ちゃんと書かれているのはなぜでしょうか?
普通なら,人間には理解しにくい字がバイナリで書かれているはずなんですが
0464デフォルトの名無しさんNGNG
>>462
おまえが答えを読み取れてないだけだろ。
日本語がよめねーの?
アフォにはここにきてほしくねーな。
日本語学校でもいってろ!!
0465デフォルトの名無しさんNGNG
>>463
バイナリモートとテキストモードの違いを調べてみれ
0466デフォルトの名無しさんNGNG
>>465
おまえが調べろ!
0467デフォルトの名無しさんNGNG
>>464
やはり、言い訳するのがやっとか(w
これ以上やっても無駄だから放置するにかぎるな。
0468デフォルトの名無しさんNGNG
厨房は何を使えばいいの?
0469デフォルトの名無しさんNGNG
>>467
やはり日本語が理解できないのか(w
これ以上やっても無駄だから無視するにかぎるな。
0470デフォルトの名無しさんNGNG
#include <stdio.h>
main()
{
  int *p,i=10;
  p=&i;
  printf("%d\n",*p);
  return 0;
}
4行目と6行目は*付いてる。5行目に*が付かないのはなぜですか?
0471デフォルトの名無しさんNGNG
>>470
p 指し示す先(iのアドレス)
*p 指し示す先の値(iの値)
0472デフォルトの名無しさんNGNG
>>463
バイナリモードとテキストモードは改行文字の扱いに違いがあるだけでそ。
というか"\n"が0x0Aなのがバイナリモード
"\n"がUNIXだと0x0A,DOSだと0x0D0x0Aになるのがテキストモードでそ。
0473470NGNG
>>471
わかるようなわからんような・・
宣言してないものを使って変な感じがするのですが
0474デフォルトの名無しさんNGNG
>>473
int *p;はint型へのポインタの宣言。
p=&i;はpにiのアドレスを入れる。
printfの行の*pはpに入っているもの(iのアドレス)が指すものを参照する。
0475474NGNG
訂正
×int *p;はint型へのポインタの宣言。
○int *p;はint型へのポインタpの定義。
0476デフォルトの名無しさんNGNG
ポインタの定義と間接参照が同じ形だからいけないんだろうな・・・
0477470NGNG
>>474>>475
このプログラムは使い方わかりました。ありがとう

参考書見てるとこれより全然複雑だ・・・・・
0478439NGNG
>>462
> >>458
> お前、文章読めるか? 答えになってないだろ。
> 答えが読み取れるというのなら言ってみろ。

元々 C 言語は、高級アセンブラみたいな発想で作られてるから、「コンパイルしたコードがわからん奴は使うな」と言うことだ。
その昔は、int とポインタを相互にがんがん代入し合っても文句一つ言われなかった事ぐらい知ってるか ?
まあ、最近はアセンブラも読めない奴が C/C++ なんかを使うようになったから、いろんな警告を出すようになったけどね。
未定義の場合に警告を出せと言うのはいいけど、>>441 のようにできないケースがある。できるものだけやれと言う思想はわかるけど、できないなら全てやらないという思想もある。
大方の C の処理系製作者は「ウザイ警告出すぐらいなら、プログラマの裁量に任せた方がいいな」と考えて後者を採用してるんだろな。

それが嫌なら、自分で作れよ。コンパイラじゃなくても、lint みたいな奴でもいいんだからさ。

> どうせ、「お前には言ってもわからないよ」とか言い訳するのが関の山だろ。

そんなことは言わんけど、上に書いたことぐらい理解できない厨房は C なんか使わないほうが身のためだよ。
0479デフォルトの名無しさんNGNG
HANDLE hf = CreateFile("test.dat",GENERIC_READ,0,NULL,OPEN_ALWAYS,0,NULL);

if(hf != INVALID_HANDLE_VALUE){
char buf[256];
DWORD read;
printf("オープン成功\n");
ReadFile(hf,buf,sizeof(buf),&read,NULL);
buf[read]='\0'; //バイナリモードでは,改行コードがないから?
printf("buf=%s",buf);
CloseHandle(hf);
}

buf[read]='\0';は何をしているんでしょうか?
0480デフォルトの名無しさんNGNG
HANDLE hf = CreateFile("test.dat",GENERIC_READ,0,NULL,OPEN_ALWAYS,0,NULL);

if(hf != INVALID_HANDLE_VALUE){
  char buf[256];
  DWORD read;
  printf("オープン成功\n");
  ReadFile(hf,buf,sizeof(buf),&read,NULL);
  buf[read]='\0'; //バイナリモードでは,改行コードがないから?
  printf("buf=%s",buf);
  CloseHandle(hf);
}

buf[read]='\0';は何をしているんでしょうか?
0481デフォルトの名無しさんNGNG
ファイルの中身を文字列とみなし、ASCIIZ文字列にしてるんでしょう。

ところで
> ReadFile(hf,buf,sizeof(buf),&read,NULL);
の第三引数は sizeof(buf)-1 にしないとまずいですね。
0482デフォルトの名無しさんNGNG
>>478
プログラマの裁量に任せるというのならWarningなんてすべて出さなければ良い。
警告がウザイなら、ワーニングレベルを下げればいいだけの話だろ。
だいたい、未定義の動作のコードをプログラマの裁量にあわせてどうなるって言うんだ。
書いた奴の力量がわかる以外なんの意味も無いだろ。
0483デフォルトの名無しさんNGNG
解りました。まとめましょう。

未定義や不定はCの『美徳』

これでよろしいかな?
0484デフォルトの名無しさんNGNG
>>482
で、おまえは誰にどうしてほしいわけよ。
ここでわめいてたって何も変わらんぞ。
0485デフォルトの名無しさんNGNG
Cなんか止めて、みんなJAVA使え、ってことじゃーねーの。
0486デフォルトの名無しさんNGNG
なーんだ。じゃあスレ違いだから放置だな。
0487デフォルトの名無しさんNGNG
>>484
別にここでどうしてほしいとも思わないよ。何かしてほしいならしかるべきところに言う。
ただ「未定義や不定でWarningやErrorにならない納得できる理由は無い。」という結論にしたいだけだ。
>>483は『美徳』という言葉が引っかかるが、それ以外に理由は無いという点で納得できる。
0488デフォルトの名無しさんNGNG
「仕様です」
0489デフォルトの名無しさんNGNG
>>488
warningにしてはいけない仕様は無いだろ。
0490デフォルトの名無しさんNGNG
ワーニング
0491デフォルトの名無しさんNGNG
仕様なんだからしようがない。
0492デフォルトの名無しさんNGNG
>>487
このスレでそういう結論が出れば納得かー。
生粋の2ちゃんねらだな。
0493デフォルトの名無しさんNGNG
>>481
日系ソフトウェアのサンプルプログラムなのだが・・・
-1するのは,最後の配列の次に代入しないため?
(255に\0を入れるため?)
0494デフォルトの名無しさんNGNG
>>492
しかたないだろ。他に納得のいく理由を言えないのだから。
0495デフォルトの名無しさんNGNG
仕様なんだから仕様が無いと書きたかったと思われ・・・
0496デフォルトの名無しさんNGNG
> 日系ソフトウェアのサンプルプログラムなのだが・・・

日経系の記事を間に受けちゃダメ(T_T)

>-1するのは,最後の配列の次に代入しないため?
> (255に\0を入れるため?)

ビンゴ。データが256バイト以上あると、readは256になる。
んで buffer[read]=0 とやるとバッファオーバーランだね。
0497デフォルトの名無しさんNGNG
>>456に反論しようかとも思ったがウザいんでやっぱやめた。
0498デフォルトの名無しさんNGNG
>>487
> ただ「未定義や不定でWarningやErrorにならない納得できる理由は無い。」という結論にしたいだけだ。

未定義で警告やエラーになるケースはいくらでもある。(もちろん処理系依存だけど、例として return 文のない関数 (void 型は除くよ) の戻り値とか)

要は、a = a++; なんて言うコードを見つける労力とそれに見合う利益を見比べて、多くの処理系では警告やエラーにしなくていいと思ってるだけだよ。別に規格で決まっているわけじゃないし、嫌なら...

> それが嫌なら、自分で作れよ。コンパイラじゃなくても、lint みたいな奴でもいいんだからさ。

と言うだけのことなんだよ。まあ、こいつは...

> 別にここでどうしてほしいとも思わないよ。何かしてほしいならしかるべきところに言う。

とわめくことしかできない DQN みたいだから、何言っても無駄みたいだけどね。(しかるべきとこってどこだよ、言ってみな。ププッ。)
0499デフォルトの名無しさんNGNG
Cの文句を言ってここの人たちに同意してもらいたい、ただそれだけのことだろう。
それで納得してぐだぐだ言わなくなるのなら快く同意してあげようじゃないか。
0500デフォルトの名無しさんNGNG
うむ。
                               ≡≡≡( ・ω・)ノ500
0501デフォルトの名無しさんNGNG
みんなくだらないことをうだうだ続けてるなぁ。
未定義で警告にならない例ってのはコンパイラを作っているところの趣味(たまに技術不足?)ってだけだろ。
最初(>>432か?)から、ただの趣味。特に警告にならない理由なんて無いって答えればよかったんだよ。
>>432も馬鹿だけど煽りだけで的確な返答が出来ない奴も馬鹿だね。
0502 NGNG
>>496
親切にありがとん
0503デフォルトの名無しさんNGNG
501は自分の回答も馬鹿であることに気づいてるのか...
0504デフォルトの名無しさんNGNG
>>503
し〜〜〜っ、それいっちゃダメ。>>501 は、今満足感でいっぱいなんだから。いらんこと言うとまた暴れだすかもしれないしね。
0505デフォルトの名無しさんNGNG
>>503 >>504
し〜〜〜




























煽るだけならだまっとれ。
0506デフォルトの名無しさんNGNG
改行迷惑だって
0507デフォルトの名無しさんNGNG
a++だけの単文以外は全て警告を出すとか
ダメ?
0508デフォルトの名無しさんNGNG
>>507
ダメ。

char *strcpy(const char *d, char *s)
{
char *s1 = s;
 while((*d++ = *s1++) != '\0')
  ;
 return s;
}

とかで警告でまくる。

まずは...

・同一式中で同一変数に対して書き込みが2回以上あるケース
・同一式中で同一変数に対して読み込みと書き込みが1回以上あるケース
・代入文で、同一変数に対して両辺で書き込みを行っているケース

は警告するとかじゃだめかなぁ。
0509デフォルトの名無しさんNGNG
>>480
改行コードじゃないよ。0は文字列終端。
0510デフォルトの名無しさんNGNG
agetoke
0511デフォルトの名無しさんNGNG
printf以外の出力のほうほうありますか?
0512デフォルトの名無しさんNGNG
puts,put_
0513デフォルトの名無しさんNGNG
fprintf
0514デフォルトの名無しさんNGNG
_write
0515デフォルトの名無しさんNGNG
ビデオメモリに直接描画してこそ漢
0516432=馬鹿NGNG
つーか、a=a++とかって、「Cの仕様」 じゃあ未定義だけど
「コンパイラの仕様」 だとバッチリ定義されてるんだよねー
ってのが言いたかった。 なんてね。

いやマジでコンパイラで弾いてほしいよな。
マジでエラーやワーニングにしない理由が和姦ねーよ
0517デフォルトの名無しさんNGNG
死ぬほどデバイス依存
0518デフォルトの名無しさんNGNG
>>516
> マジでエラーやワーニングにしない理由が和姦ねーよ

>>498
> 要は、a = a++; なんて言うコードを見つける労力とそれに見合う利益を見比べて、多くの処理系では警告やエラーにしなくていいと思ってるだけだよ。

これでもダメか ?

>>517
デバイス ? コンパイラ依存だろ ?
0519デフォルトの名無しさんNGNG
>>515
ネットワークサーバなのでビデオメモリなぞ持っていない罠。
コンソールもシリアルコンソールだったりして。
0520デフォルトの名無しさんNGNG
>>516
ANSI の「未定義」ってのはそういう事です。つか RTFM だ莫迦。
0521デフォルトの名無しさんNGNG
>>518
517 は 516 に割り込まれました
0522名無しさん@XEmacsNGNG
どうでもいいんですが
a = a++;
こんな文を書く人が実際にいるんですか?
0523デフォルトの名無しさんNGNG
>>522
未定義です
0524デフォルトの名無しさんNGNG
>>518
ダメだ。
if(a=b) に警告出すくせによー
怠慢だ。
0525デフォルトの名無しさんNGNG
ところでさ、
0526デフォルトの名無しさんNGNG
ゴラァ、言いかけて途中でやめんな!で、何だってんだ!
0527デフォルトの名無しさんNGNG
>>524
if(a=b) の検出はすごく簡単だぞ。
0528デフォルトの名無しさんNGNG
LinuxでBMP画像を読み込んで表示して、
その画像の中から目的の色(オレンジ)を探し出すプログラムを作りたいんですが
よく分からないんです・・・
今までに関数やポインタ、ファイルの入出力くらいしか学んだことが無くて・・・
位置からご教授願えないでしょうか?
よろしくお願いしますm(_ _)m

0529デフォルトの名無しさんNGNG
>>527
> if(a=b) の検出はすごく簡単だぞ。

それにいっぱい奴やるいるからな。

>>524 も、気に入らないなら自分で作ればいいんだよ。
0530デフォルトの名無しさんNGNG
>それにいっぱい奴やるいからな。

+ 激しく意味不明 +
0531529NGNG
>>529
> それにいっぱい奴やるいるからな。

ちょっと変だな。

「それにやる奴いっぱいいるからな。」

に修正だ。
0532デフォルトの名無しさんNGNG
>>531
>ちょっと変だな。
ご謙遜を、、
すごく変ですよ。
0533デフォルトの名無しさんNGNG
>>529ー>>532
おまいら激しく面白い
0534デフォルトの名無しさんNGNG
これって、違法なコードなの?
コンパイラに「 LValue じゃない!」って怒られたんだけど・・・

void f(int *a, int *b, int c, int d)
{
int i;

for(i=0;i<10;i++) *((c<d)?a:b)++=1;
}
0535デフォルトの名無しさんNGNG
>>534
C++であれば合法
0536デフォルトの名無しさんNGNG
>>534
頭大丈夫か ?

int a;
a++ = 1;

とやってんのと一緒だぞ。
0537534NGNG
>>536
へ?どして?
0538536NGNG
>>537
> へ?どして?

ごめん、頭大丈夫じゃないのは俺だ。* と ++ の結合順序勘違いしてた。

>>534
>>535 が言うように、C だとダメで、C++ だと OK。
0539デフォルトの名無しさんNGNG
for(i=0;i<10;i++) (c<d)?*a++=1;:*b++=1;
じゃだめなの?
0540534NGNG
>>535
>>538
へ?どして?
0541534NGNG
>>539
いや、別にそれに相当するコードの書き方が
分からない訳じゃなくて、
一見正当そうに見えるコードにコンパイラが
ケチをつけた事にびっくりしただけの話
0542539NGNG
って、ゆうかー
何でループのなかで比較繰り返しているの???
効率悪くなーい??
0543539NGNG
そういう意味ね。542先走ってて恥ずかしいや
0544デフォルトの名無しさんNGNG
> 効率悪くなーい??

最適化かければ比較は外でやると思う
0545536NGNG
>>539
> for(i=0;i<10;i++) (c<d)?*a++=1;:*b++=1;
> じゃだめなの?

そりゃダメだろ、文法エラーだ。(';' が余分だよ。)

>>540
C は、条件演算子の結果は、左辺値になれない。(GCC とかの、拡張機能でサポートしていた記憶がある。)

だから、

int a, b, c;
a ? b : c = 1;

なんて式は、C ではダメだけど、C++ では合法。
0546534NGNG
>>545
じゃあ、こんなのも駄目なの?
(基本的に今回の例と大差が無い様な気がするけど)

void f(int a, int b, int c[])
{
c[ a < b ? 0 : 1 ] = 1;
}
0547デフォルトの名無しさんNGNG
>>545
a?b:c=1;ってaが真ならbを返し、偽ならcに1を代入してそれを返すという式にならない?
a?b:(c=1);としないとだめ?
0548デフォルトの名無しさんNGNG
a?b:c=1;を-ansiオプションつけてgccでコンパイルしたら通ったよ。
0549548NGNG
わるい、-pedanticオプションもつけたらだめだっていわれた。
0550デフォルトの名無しさんNGNG
>>548
-pedantic 付けてみな。
0551デフォルトの名無しさんNGNG
>>547
> a?b:c=1;ってaが真ならbを返し、偽ならcに1を代入してそれを返すという式にならない?
ならない。代入より条件演算子の方が優先順位が上。

>>546
物凄く大差がある。>>534は
「代入式の左辺の中で左辺値になれないものを使うこと」が
マズいのではなくて、「左辺値になれないもの( c<d?a:b )に
左辺値を要求する演算子( ++ )を適用していること」 が問題。
*( c ? a++ : b++ ) = ... なら問題なし。
0552デフォルトの名無しさんNGNG
>>546
> じゃあ、こんなのも駄目なの?
> void f(int a, int b, int c[])
> {
> c[ a < b ? 0 : 1 ] = 1;
> }

これは、大丈夫。( a < b ? 0 : 1 ) の部分は、左辺値じゃないから。
左辺値なのは、c[...] の部分だからね。

>>547
そう言うこと。
0553デフォルトの名無しさんNGNG
a?b:c++; OK
(a?b:c)++; NG

正しい?
0554デフォルトの名無しさんNGNG
a?b=1:c;
?と:の間ならOKなのか。。。
0555デフォルトの名無しさんNGNG
>>528
GTKを使えば画像を読み込んで表示することができるんではないでしょか。
0556534NGNG
>>552
もしかして今回の例でケチをつけられた所は
++ 演算子を使用している部分なの?

たとえば

*((c<d)?a:b)=1;

だったら問題が無かったのか?
0557デフォルトの名無しさんNGNG
>>556
> たとえば
> *((c<d)?a:b)=1;
> だったら問題が無かったのか?

そう言うこと。
0558534NGNG
>>557
なるほど、勉強になりますた。
0559デフォルトの名無しさんNGNG
>555
えっとGTKをどのように使えばよいでしょうか・・・?
GTKはウィジェットをすこしつかったことがあるだけなんでよく分からないんです(汗;
0560528NGNG
↑528です^^
0561デフォルトの名無しさんNGNG
>>557
初心者をからかってたのしかったですか?
0562デフォルトの名無しさんNGNG
>>561
> 初心者をからかってたのしかったですか?

何を言いたいの ? 単なる煽りか ?
0563557NGNG
>>561
初心者は適当にあしらっておけばいーんだよ
0564デフォルトの名無しさんNGNG
>>563
2ちゃんねらは性格歪んでるな(藁
0565デフォルトの名無しさんNGNG
>>561
話の内容が自分には理解できなくて悔しかったですか?
0566デフォルトの名無しさんNGNG
きみたち、たぶん、西友で買った霜降りジーパン履いてますね?
0567デフォルトの名無しさんNGNG
今パンツ一丁だが、何か?
0568デフォルトの名無しさんNGNG
俺は一応シャツも着てます
0569デフォルトの名無しさんNGNG
俺は一応ブラだけ着けてます。
0570デフォルトの名無しさんNGNG
>>569
> 俺は一応ブラだけ着けてます。

パンティーは ?
0571デフォルトの名無しさんNGNG
おれはちんぽに女をつけてます。
0572デフォルトの名無しさんNGNG
漏れはケツの穴に男がささってます
0573デフォルトの名無しさんNGNG
すみません、あるバイトの中の、特定のビットをOFFにする方法を知りたいのですが
どなたかご存知ないですか?
0574デフォルトの名無しさんNGNG
ビット演算かましてください
0575デフォルトの名無しさんNGNG
x &= ~(1<<bit);
0576573NGNG
>>574-575
ありがとうございます。おかげで問題が解決しました。
短い間にお答えいただきありがとうございました。
0577デフォルトの名無しさんNGNG
すみません、longで宣言した変数の特定のビットをONNにする方法を知りたいのですが
なにかいい関数はありませんか?
0578デフォルトの名無しさんNGNG
int n=123;
char ss[256];

sprintf(ss,"%3d",n);

ss[0]=1;
ss[1]=2;
ss[2]=3;
ss[3]=?;

ssの配列に入っている数字は,あってます?
文字列としては入っているんでしょうか?

int num=ss[0];
などはだめなんでしょうか?
0579デフォルトの名無しさんNGNG
>>577
>>575を見て思いつかんのか…

x |= (1L << bit);
0580デフォルトの名無しさんNGNG
>>578
何をしたいのかわからん。

まず、
ss[3]には'\0'が入ってる。

次に、
int num=ss[0];
をやっても構わんが、たぶん君の思ってる値とは違うものが入っているだろう。
0581デフォルトの名無しさんNGNG
>>578
> ssの配列に入っている数字は,あってます?

合ってない。
あんたの環境がわからないから答えようがないけど、多分...
ss[0] = 49; ss[1] = 50; ss[2] = 51; ss[3] = 0;
になってると思う。

> 文字列としては入っているんでしょうか?

そう言うこと。

> int num=ss[0];
> などはだめなんでしょうか?

何を期待しているのかは知らないけど、num = 1 になることを期待してるならダメ。
0582デフォルトの名無しさんNGNG
>>579
>>577 は、ネタだと思うが...。第一、ONN って何だよ ?
0583デフォルトの名無しさんNGNG
>>582
ぐぐれ、話はそれからだ
0584デフォルトの名無しさんNGNG
>>581

nt num=atoi(ss[0)]

もあかんですよね?;
0585デフォルトの名無しさんNGNG
そんなもんまずコンパイルが通らん
0586デフォルトの名無しさんNGNG
>>584
> nt num=atoi(ss[0)]

一行中に、三つ以上間違いがある投稿は、ネタとみなす。
0587582NGNG
>>583
なかなか、おもろい。>> ONN
0588デフォルトの名無しさんNGNG
>>586
3つ…?
ぷっ、指摘されて気付いた。笑いますた。
0589デフォルトの名無しさんNGNG
文字列を返すDLLを作ったんですが、
リターンの後に動的に確保したメモリを解放するにはどうすれば良いんでしょうか
0590デフォルトの名無しさんNGNG
int num=atoi(ss[0)]);

もあかんですよね?
0591デフォルトの名無しさんNGNG
なんか最近ネタばっかだな
0592デフォルトの名無しさんNGNG
>>590
ネタでなければ一回コンパイルしてから、
書き込んだほうがいい。
0593デフォルトの名無しさんNGNG
ANSI Cのqsortで、swap作業はどうやってるんですか?
for (p = (char *) v, end = (char *) v + nmemb*size; p < end; p += size)
  ...
こういうループで調べていくのは分かったんですが。。。
0594デフォルトの名無しさんNGNG
何をえらそーに
0595デフォルトの名無しさんNGNG
>>589
メモリを確保して返す関数なら解放用の関数も作れ
0596デフォルトの名無しさんNGNG
>>593
buf = malloc(size);
  :
memcpy(buf, p1, size);
memcpy(p1, p2, size);
memcpy(p2, buf, size);
  :
free(buf);

て感じじゃないの。swapするときにいちいちmalloc、freeしてたら遅くなるから、
qsort呼ばれたときにbufを確保して使いまわして、終わったときにfreeだろうな。
他に方法あるかな。
0597デフォルトの名無しさんNGNG
つーか激しく外出。
このスレの >>16から読め。
0598589NGNG
これでいいですか?


const char *buffer;

BOOL APIENTRY DllMain(HINSTANCE hInstance, DWORD ul_reason_for_call, LPVOID pParam)
{
  switch (ul_reason_for_call) {
  case DLL_PROCESS_ATTACH:
    buffer=malloc(16);
    break;

   case DLL_PROCESS_DETACH:
    free(buffer);
    break;
  }
   return TRUE;
}

__declspec(dllexport) const char *WINAPI res_c(){
    strcpy(buffer,"てすと");
    return(buffer);
}
0599589NGNG
>>598
あと追加質問で、DllMain()の
 buffer=malloc(16);
を res_c()で行うのはOKですか?
0600デフォルトの名無しさんNGNG
>>598
うむむ。windowsに詳しくないのだが、それ、リエントラントじゃないのでは。
共有ライブラリでリエントラントでないのはまずいんじゃないの。
0601デフォルトの名無しさんNGNG
ポインタbufferは、プロセス別に取られるはずだから、別にいいんでわ?
Threadとか、ライブラリにグローバル変数使う事については知らない。
0602600NGNG
>>601
あ、そうなんですか。失礼しました。

ただ、マルチスレッドでは問題が起きそうだね。
res_cを呼んだスレッドがあって、返ってきた物を使う前に
別のスレッドがres_cを呼んじゃって書き換えられるという
ことは十分ありうる。
0603デフォルトの名無しさんNGNG
char c[80];

sizeof(c)

って可能なんですか?
どういう動作をしているんでしょうか?
0604デフォルトの名無しさんNGNG
sizeof(char) * 80 になるYO!
0605デフォルトの名無しさんNGNG
>>602
仮に文字列の書き換えがres_c内だけでしか行われて
いないなら、別スレッドで書き換えられても問題なし。

しかし、それ以前に >>598のやっていることは
あまり意味がないというか、一体何がやりたいんだ?

>  buffer=malloc(16);
> を res_c()で行うのはOKですか?
これをやるならわかるけど。
0606デフォルトの名無しさんNGNG
>>604
つまり80ね
0607デフォルトの名無しさんNGNG
テキストファイルの一行目だけを読み込んでSというAnsiString変数に代入したいのだが・・・
0608 NGNG
>>604

sizeof(char)*80

と毎回やっていた俺はあほですか?

自動で文字列数(配列数)を調べてくれるって事?
char型=1だからできる技なんですよね?
0609デフォルトの名無しさんNGNG
で、何?
0610デフォルトの名無しさんNGNG
>SというAnsiString変数
AnsiStringって型みたいだが、本当にCか?
0611デフォルトの名無しさんNGNG
>>608
>char型=1だからできる技なんですよね?
んなこたーない
0612607NGNG
C++でした。Stringに代入したいんです。
0613デフォルトの名無しさんNGNG
>>608
int a[80]; なら sizeof(a) は sizeof(int)*80 になるよ。

> と毎回やっていた俺はあほですか?

80を #define しているなら別にいいんでないかな
たとえば
 char c[80]; を
 char* c = malloc(80);
に書き換えたときのために。
0614デフォルトの名無しさんNGNG
>>612
String?C#か?
0615デフォルトの名無しさんNGNG
>>607
C++Builderですか?

AnsiStringに>>を適用すると、改行文字も含めてファイルの中身を
全部読んでしまいますからねえ。

私はchar[]に一度読み込んで、S(buf)などのコンストラクタを呼び出して
いますがスマートじゃないですね・・・・・
0616デフォルトの名無しさんNGNG
■ VisualC++(MFC限定)相談室 5■
http://pc3.2ch.net/test/read.cgi/tech/1028553308/
0617デフォルトの名無しさんNGNG
>>607
std::stringなら、getline(strm, str); という形式が使える。
0618616NGNG
ごめん。607しか見てなかった。
>>616は間違いです
0619607NGNG
>>615
えぇ、C++Builderです。
TStringListで読み込むと、一行だけ必要なのに時間がかかると思うし・・・
簡単に言うと、Delphiの
var
F: TextFile;
S: String;
begin
AssignFile(F);
Reset(F);
Readln(F, S);
CloseFile(F);
を、C++でできないかな
0620デフォルトの名無しさんNGNG
>>619
delphi知らんけど。
gets()じゃいかんの?
0621デフォルトの名無しさんNGNG
>>619
AnsiStringにはpush_back()がないから、back_inserterも使えんしな。
getlineも使えない。

std::string str;
S = "";
getline(ifs, str); //もしくはホワイトスペースで区切られてもよいなら ifs >> str;
S.printf("%s", str);

とやって、一度std::stringに読み込んだ文字列をAnsiStringにコピーしてはどうか。
0622DefaultNGNG
Xlibで、

57: XLookupString((XKeyEvent *)&event,string,sizeof(string),&key,NULL);
58: if ( string[0] == 'q' ){
59: goto FINISH;
60: }

のようにして文字キーの押されたのは取得できたのですが、文字キー以外のキー
の取得しかたがわかりません。どうやればいいんですか?
矢印キーを取得したいです。
0623デフォルトの名無しさんNGNG
>>619
もう一度分かりやすく書きます。

std::ifstream(F, "text.txt");
std::string str;
AnsiString S;
std::getline(F, str);
S.printf("%s", str); // std::stringをAnsiStringにコピーする
F.close();
0624デフォルトの名無しさんNGNG
やっぱりこの方がいいかな。

std::ifstream(F, "text.txt");
std::string str;
AnsiString S;
std::getline(F, str);
S.printf("%s", str.c_str()); // std::stringをAnsiStringにコピーする
F.close();

"%s"に対してstd::stringを適用した時はoperator*が呼ばれるわけで
すが、これがCスタイルの文字列を返すことは保証されてないわけで、
c_str()メンバ関数を適用すればいいかと。
0625デフォルトの名無しさんNGNG
>>624
AnsiStringって知らないんだけど、
AnsiString S(str.c_str());
って出来ないの?
0626デフォルトの名無しさんNGNG
>>625
できるようです。
コピーはprintf、初期化にはコンストラクタと使い分ければいいかな。
0627デフォルトの名無しさんNGNG
>>626
まともな文字列くらすなら、
operator=(const AnsiString&)/operator=(const char *)くらいは
用意されてると思うのだが・・・

つーか、ここCすれだよな。
0628デフォルトの名無しさんNGNG
本を読んでいたら、こんなのを見かけました。
(void *(*)(void *))func <-- funcは関数

なんで(void *)funcだけじゃだめなんですか?
0629デフォルトの名無しさんNGNG
(void *)func は、関数funcのアドレスを
void*にキャストする式。

(void *(*)(void *))funcは、funcのアドレスを
void*をとり、void*を返す関数ポインタにキャストする式。

型が違う。
0630デフォルトの名無しさんNGNG
>>628
関数へのポインタへのキャスト。
0631600NGNG
>>628
その例における、funcに代入できる関数のプロトタイプは

void *f(void *);

だ。
0632デフォルトの名無しさんNGNG
>>631
がーん、変なのが残ってた。
キャストか。キャストだよな。代入はできないよな…
0633デフォルトの名無しさんNGNG
>>596
mallocしなくても出来るだろ。

void memswap(char *p1, char *p2, size_t len)
{
 while (len-- > 0) {
  char t = *p1;
  *p1++ = *p2;
  *p2++ = t;
 }
}
0634デフォルトの名無しさんNGNG
>>633
外出。
0635デフォルトの名無しさんNGNG
>>633
遅いコードだなおい・・・
0636デフォルトの名無しさんNGNG
>622
XLookupString 後に key に入っている KeySym を使いましょう。
0637596NGNG
>>635
ま、3回もmemcpy呼ぶのとどっちが遅いかはなんとも言えんが(w
0638デフォルトの名無しさんNGNG
というか、>>36でも言ったけどqsortは失敗が許されないからmallocは使えない。


なんでqsortの要素の交換方法なんてマイナーな話題が二度も同じスレででるんだろう。
0639 NGNG
int num[NUM_SIZE];

&numとnumが同じなの?

numは,配列の先頭アドレスですよね
&numは・・・?
&は,アドレスを指すから・・・?
0640デフォルトの名無しさんNGNG
ageてないからネタ確定ってことでよろしいか?
ネタじゃないんなら>>1のリンク読め
0641 NGNG
int num[NUM_SIZE];

&numとnumが同じなの?

numは,配列の先頭アドレスですよね
&numは・・・?
&は,アドレスを指すから・・・?
0642 NGNG
ネタ=sageはいかがなものか
0643デフォルトの名無しさんNGNG
>>641
まず
>&numとnumが同じなの?
なんでこんなふうに思っちゃったのかが問題だ
0644D級初心さNGNG
641さんの書き込み見て

#include <stdio.h>
#include <conio.h>

int main()
{
int num[]={1,2,3};
printf("%d %d %d %d",num, &num, *(&num), **(&num));
getch();
return 0;
}

ってやったんですけど、結果が
688760 688760 688760 1

ってなりました。どうして、numと&numがおんなしなんですか?
0645デフォルトの名無しさんNGNG
構文豆腐
0646デフォルトの名無しさんNGNG
&num は配列のアドレスを表す
num は配列そのものを表すが配列の先頭要素のアドレスへの暗黙の変換がある

しかしポインタを%dで受け取るのは止めようぜ
0647デフォルトの名無しさんNGNG
   λ...............    。るくてっ逝だ当本
0648デフォルトの名無しさんNGNG
>>646
*(num+1)=5;
と、使えますもんね。
0649デフォルトの名無しさんNGNG
>>643
http://piza.2ch.net/tech/kako/967/967985026.html
の62を見て
0650デフォルトの名無しさんNGNG
>>649
これが初代?
しかしこの痛い1でよくこれだけ長寿のスレができたもんだな・・・
0651デフォルトの名無しさんNGNG
>>649
このスレの「俺」ってそこの1だったんだね。目から鱗が落ちました。
0652デフォルトの名無しさんNGNG
みなさん 迷える子羊に合いの手を(シャンシヤン!)

私は、ソースの書き方に ほんの少々のこだわりを持ってCのプログラミング
をしています。でも同僚に言わせると「その書き方は邪道」と言われて
今悩んでいます。みなさんの意見を聞かせてください。


{は、その行の末尾に付ける
   if(a==b){
      c=d;
      e=f;
   }
理由 {を単独で1行にすると、1画面で見えるコードの行数が少なく
   見にくい。と思う。
   
   
   
一部が異なるだけで、同じ内容が構文が連続するときは、1行中でも
複数の命令可
   if(a==1){ printf("NEC\r");   c=sub(1); }
   if(a==2){ printf("FUJITSU\r"); c=sub(2); }
   if(a==5){ printf("IBM\r");   c=sub(5); }
   if(a==6){ printf("DELL\r");   c=sub(6); }
   if(a==8){ printf("COMPAQ\r"); c=sub(8); }
   if(a==9){ printf("APPLE\r");  c=sub(9); }
理由 COPY&Pasteで複写して、必要な部分のみ変更すれば早く書ける
   ぱっと見に、何をしているのかがわかりやすい。
   1行には1命令で書くと、リストが長くなり、見にくい、と思う。

どんなもんでしょうか。
0653デフォルトの名無しさんNGNG
>>652
{は}とそろえたほうがどこからどこまでが対応するブロックかわかりやすいでしゅ
行末につけるとアンチK&Rにキモがられましゅ

if ( a==1 ) printf( "NEC\r" ), c=sub(1);

とかできるかもしれましぇん
0654デフォルトの名無しさんNGNG
俺もそう書いてる
特にクレームつけられたことはないね
0655 NGNG
>>652
> {は、その行の末尾に付ける

センスと好みの問題なのでどうでもいい。

> 一部が異なるだけで、同じ内容が構文が連続するときは、1行中でも
> 複数の命令可

同じような内容が3箇所以上出てくることに疑問を持たないのは
どうかと思う。
0656デフォルトの名無しさんNGNG
   if(a==1){ printf("NEC\r");   c=sub(1); }

はBASIC臭がするからイヤだ。
0657デフォルトの名無しさんNGNG
結論。
コーディングスタイルを語るのもいいが、
その前にコードの設計を見直した方がいい。
0658デフォルトの名無しさんNGNG
漏れの場合、ローカル変数漏れを防ぐブロック化を多用するんで
if (a == b)
{
 do something;
}
と
if (a == b) do something;
{
 other things;
}
の区別がしにくいので、特に制御構文の場合は
if (a == b) {
 do something;
}
にしてる

逆に関数の宣言とか、実行文中に現れないヤツは
void func_hoge(int arg)
{
 do something;
}
にしてる

こっちのほうがよっぽど汚い(藁)
0659デフォルトの名無しさんNGNG
俺はこう書く
for(〜){
  for(〜){
〜〜〜〜
} }
やっぱダメ?
0660デフォルトの名無しさんNGNG
りすぱーが、コードの最後を
  )))))))))))
とかで終えるのを思い出した。
0661デフォルトの名無しさんNGNG
>>660
LispじゃないC系言語で
}}}}}
ってのを見た時には憤死するかと思った
0662デフォルトの名無しさんNGNG
>>659
やめてほしい(^_^;)
0663デフォルトの名無しさんNGNG
ランダムに発生させた0〜9までの整数を
DWORD型、例えば 0x007fffff の7の部分に入れたいのですが
どうすればいいのでしょうか?
例えばrandで3が出たら 0x003fffff にするといった具合です。
できれば0〜15まで整数を発生させて0〜fに置き換えたものを
7以外の部分にも入れられるといいのですが・・・
0664デフォルトの名無しさんNGNG
a = (a & ~(0x0f <<20)) | (rand_val <<20);
0665デフォルトの名無しさんNGNG
int r = rand() % 15;
DWORD v = 0xfffffUL | (r << 20);
printf( "result: %x\n", v);
0666デフォルトの名無しさんNGNG
randの罠
http://www.catnet.ne.jp/kouno/c_faq/c13.html#16
0667デフォルトの名無しさんNGNG
>>663
いくつか解がある。DWORDの型がわからんが、
たぶんunsigned longのtypedefだろうと仮定する。

乱数の値はr(0 <= r < 10)とするよ。求める値をvに代入する。
まず無理やりな解から。

char buf[7];
sprintf(buf, "%dfffff", r);
v = strtoul(buf, NULL, 16);

これはやってることがアフォなんでやらないように(w
で、正当な答は

v = ((DWORD)r << 20) | 0xfffff;

他にもあるかな。

>できれば0〜15まで整数を発生させて0〜fに置き換えたものを
>7以外の部分にも入れられるといいのですが・・・

意味がよくわからない。0x00000000〜0x009fffffの乱数を
発生させたいという意味だろうか。だとすると0〜15の乱数を発生させる
やりかたがわかるのならできるんじゃないかな?
0668デフォルトの名無しさんNGNG
各桁にランダムな値を順に入れて行けば良い
桁数分繰り返せば出来る、と言うのが適当なのか?
シフトを1回に一桁づつすればとか
ヒントになるようなならないようなことも書いておく。
0669デフォルトの名無しさんNGNG
質問。
c == EOF のあと、もういちど c = fgetc(fp) とやった場合、
c == EOF になることは保証されますか?
0670デフォルトの名無しさんNGNG
はい
0671うんっちっち坊やNGNG
ポインタって一体どんなときに使うのですか?
ポインタを知らずして、ゲームは今まで作ってきました。
特に問題なかったのですが、今資格のために正しいC言語を
勉強してるのですが、ポインタがいまいちわかりません。

どういうものなのか、どういうときにつかうのか。簡単におしえてください。
0672うんっちっち坊やNGNG
えーっとたとえば
Aという数値データがあって
1つはAそのもの。もうひとつ*zは
A+5の値を毎回表示とかってときに使うんですかね?
言葉ヘタクソですけど。

*z=&A+5
A 1,2,3,4,5,6、・・
*z 6、7、8、9、10、11・・  みたいな。

でも
*zを使わないでも
Z=A+5
でも一緒だし、なんか数が変になっちゃう例ってないですか?
そういうときに使うんですよね?
0673デフォルトの名無しさんNGNG
>>671
http://pc3.2ch.net/test/read.cgi/tech/1030901827/l50
あたりを読め
0674デフォルトの名無しさんNGNG
>>671
FILE *fp;
fp = fopen(filename, "r");
とか
void f(int *ap) {
…
}

int a[10];
f(a);
とか
0675nobodyさんNGNG
>>674
int a[10];
f(a);
って?ポインタ入ってないんですが
0676デフォルトの名無しさんNGNG
画像処理ボードから取り込んだデータ(画素値,char型)をintに変換したい
のですが,atoiを使ってるのですが,うまくいきません.
なんか他に方法ありますか?

取り込むデータは
char data;
で定義しています.
0677676NGNG
ボードから正しく取り込めていることは確認しています.
あと.atoiを使うと,"char"を "const char*"に出来ないとか出ます.
0678デフォルトの名無しさんNGNG
>>676
文字列で取り込んでいるの?
0679デフォルトの名無しさんNGNG
>>676,677
char data;
int idata;
idata = data;
0680デフォルトの名無しさんNGNG
>>675
> って?ポインタ入ってないんですが

関数の引数がポインタなんだと思うが。
0681675NGNG
>>674
int a[10];
f(a);
ポインタ演算子入ってないんですがf(a)のaはポインタ
というのですか。

0682675NGNG
>>680
ありが�d。書き込みのタイミング悪かったっす。
0683680NGNG
>>682
まずは >>1のリンクにある C FAQ を読んだ方がいい
0684デフォルトの名無しさんNGNG
>>672
以下のプログラムの???を埋め、
int型の数値を入れ替えるswap関数を作ってみろ
#include <stdio.h>
void swap( ???, ??? )
{
  ???
}

int main(void)
{
  int a = 10, b = 20;
  printf("a = %d, b = %d\n", a, b); /* a = 10, b = 20 */
  swap( ???, ??? );
  printf("a = %d, b = %d\n", a, b); /* a = 20, b = 10 */
  retrun 0;
}
0685デフォルトの名無しさんNGNG
int &a
int &b
*a^=*b^=*a^=*b;
&a
&b
0686675NGNG
>>683 Thanks much. 激しく厨でスマソ
「配列とポインター」の章にございました。
http://www.catnet.ne.jp/kouno/c_faq/c4.html#8の質問に
; が落ちてました。>厨が何ぬかすか
0687デフォルトの名無しさんNGNG
>>685
ハズレ
> int &a
> int &b
int *a
int *b
0688デフォルトの名無しさんNGNG
ま た 未 定 義 か
0689676NGNG
>678
1バイト文字です.データが8ビットなんで.
>679
試してみたらうまくいってるみたいです.ありがとうございます.
0690デフォルトの名無しさんNGNG
>>689
文字と文字列の違いがわかっちょらんな
0691デフォルトの名無しさんNGNG
>>690
違う。
文字と数値をわかっていない。
0692663NGNG
>>664-668
ありがとうございます

>>667
例えば 0x7f3c90 は
7f → 音の強さ 00〜ff
3c → 音 3c=ド (3d=ド# 3e=レ 3f=レ# 40=ミ 41=ファ....)
9 → 1001(b) = 音を鳴らす (1000(b) = 音を止める)
0 → チャンネル番号
ということだそうです。(下のページより)
 ttp://hp.vector.co.jp/authors/VA007941/program/no2090.html

で、上のデータ 0x7f3c90 は音程が3cなわけですが
音程を3eや40などに変えたい場合、どうすればいいのでしょうか?
(ランダムの話しは忘れてください(汗)
0693デフォルトの名無しさんNGNG
(既にあるデータ(0x7f3c90でも良い??))*0x110011+0x000100*(0x3e)
で、出来ない?
0694デフォルトの名無しさんNGNG
#define ONTEI_HENKOU(a, b) \
  (((a) & ~0xff00UL) | (((b) & 0xff) << 8))

x = ONTEI_HENKOU(0x7f3c90, 0x3e);
0695デフォルトの名無しさんNGNG
あっ、そっかゴメン、16進数なのだからffだねw
&の方が適しているし手間かけて済まん。
0696デフォルトの名無しさんNGNG
>>692
汎用の関数作って使いまわしたほうがよくないか?
音程以外にも変えたいだろうし。

#define OFFSET_PITCH 8
#define OFFSET_VELOCITY 16
#define OFFSET_NOTE_ONOFF 4
DWORD set_byte(DWORD data, unsigned char value, int offset) {
 return (data & ~(0xff << offset)) | (value << offset);
}
DWORD set_nibble(DWORD data, unsigned char value, int offset) {
 return (data & ~(0xf << offset)) | (value << offset);
}
DWORD set_pitch(DWORD data, unsigned char pitch) { // 音程を変える
 return set_byte(data, pitch, OFFSET_PITCH)
}
DWORD set_velocity(data, unsigned char velocity) { // 強さを変える
 return set_byte(data, velocity, OFFSET_VELOCITY);
}
DWORD set_note_on(data) { // 音を鳴らす
 return set_nibble(data, 0x9, OFFSET_NOTE_ONOFF)
}
DWORD set_note_off(data) { // 音を止める
 return set_nibble(data, 0x8, OFFSET_NOTE_ONOFF)
}
みたいな感じで。チャンネルを指定するやり方は自分で考えてくれ。
行数多すぎだバカ、と文句言われたので詰めるのに苦労した(w
0697デフォルトの名無しさんNGNG
Cの質問です!

(1)次の4つの記号 ┏ ┓┗ ┛を用いて4角を出力する rect() 関数を作成しましょう. ? 出力例 ┏┓ ? ┗┛
(2)さらに┃を利用して, 4角の縦のサイズを変えられるように rect() 関数を変更しましょう.
 Hint. rect(int n) というように引数 n を取って, n の数だけ ┃┃ を出力します.

だれかこの問題を解いてください!
0698デフォルトの名無しさんNGNG
>>697
×:Cの質問です!
○:Cの宿題です!
よってスレ違い

宿題手伝いますYO!!
http://pc3.2ch.net/test/read.cgi/tech/1029422194
0699デフォルトの名無しさんNGNG
>>697
どういうふうにやればいいと思う? というか君、Cを学ぶ気ある?
あるんなら、ヒントだけにしとくし、全くないのなら、答え書いちゃうけど。
0700699NGNG
>>698
あ、そうか、ここ宿題スレじゃなかった。すんませんですた。
0701デフォルトの名無しさんNGNG
ヒントでお願いします!
0702デフォルトの名無しさんNGNG
ヒント
・もっと自分の頭で考えましょう
0703デフォルトの名無しさんNGNG
>>700
他のスレにも書き込んでおいて知らなかったはないだろ。
0704デフォルトの名無しさんNGNG
>>699
2chにあるまじきレスですな。
0705699NGNG
>>703
いや、おれは>>698じゃないんだが…
0706デフォルトの名無しさんNGNG
>>705 すまん。まちがいた。
0707697NGNG
(1)#include <stdio.h>
main() {
printf("┏┓\n");

printf("┗┛");
}

はこれで表示されることがわかったのですが、(2)がわかりません。
ヒントだけでいいのでお願いします!
0708デフォルトの名無しさんNGNG
>>705
 >>697だろ
0709デフォルトの名無しさんNGNG
もうグダグダだな。
0710デフォルトの名無しさんNGNG
>>707
rect関数じゃないじゃん
0711699NGNG
>>708
そ、そうですた。ウワァァァ
0712デフォルトの名無しさんNGNG
>>697
マルチやめれ!
http://pc3.2ch.net/test/read.cgi/tech/1029422194/531
0713697NGNG
すみません。宿題の方で聞けといわれていたもんで・・・
悪気はなかったんです。
0714デフォルトの名無しさんNGNG
>>707
> ヒントだけでいいのでお願いします!

[重要ヒント]
forを使う。
0715デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void){
int i,hoge;scanf("%d",&hoge);printf("┏┓\n");
for(i=0;i<hoge;i++){printf("┃┃\n");}
printf("┗┛\n");return 0;}
/*この変数hogeの数値を変更することによって┃┃の長さは変わる*/
0716デフォルトの名無しさんNGNG
>>707 ヒント:10回までは表示できる
void rect(int n) {
  printf("┏┓\n");
  swich(n) {
  case 10:printf("┃┃\n");
  case 9:printf("┃┃\n");
  case 8:printf("┃┃\n");
  case 7:printf("┃┃\n");
  case 6:printf("┃┃\n");
  case 5:printf("┃┃\n");
  case 4:printf("┃┃\n");
  case 3:printf("┃┃\n");
  case 2:printf("┃┃\n");
  case 1:printf("┃┃\n");
  }
  printf("┗┛\n");
}
0717デフォルトの名無しさんNGNG
つうか、わざわざ関数作ってやることなのか?
0718デフォルトの名無しさんNGNG
つーかお前ら優しすぎるぞ。
0719デフォルトの名無しさんNGNG
>>718
やっと俺が教えれる問題だったので。
0720デフォルトの名無しさんNGNG
枠がるな
0721697NGNG
皆様、どうもありがとうございました!
感動しました。
これを応用していろいろ頑張ってみます。
0722デフォルトの名無しさんNGNG
>>721
ついでにマルチはしないように。
0723697NGNG
>>722
OKです
0724デフォルトの名無しさんNGNG
void rect( int n )
{
int i;
printf( "┏┓\n" );
for( i=0; i<n; i++ ) printf( "┃┃\n" );
printf( "┗┛\n" );
return;
}
0725デフォルトの名無しさんNGNG
スペースキーを押したというのを読み取るにはどうすればいいですか?
0726デフォルトの名無しさんNGNG
int main(){
  printf("input n ");
  scanf("%d",&n);
  rect(n);
  return 0;
}
0727デフォルトの名無しさんNGNG
>>725
getcher()
0728デフォルトの名無しさんNGNG
>>725
if (スペースキーが押されたか) {
  押された。
}





OSによって違う
0729デフォルトの名無しさんNGNG
>>728
間違い

処理系によって違う
0730デフォルトの名無しさんNGNG
>>725
>>370-
0731デフォルトの名無しさんNGNG
>>725
>>370-371
0732692NGNG
>>693-696
うおー ありがとうございます
道が開けますた!
0733デフォルトの名無しさんNGNG
n[i]まとめられた各々の実数をまためて足す場合どうすればいいですか?
n[1]=1 n[2]=2 n[1]+n[2]=3みたいな感じで。。
0734デフォルトの名無しさんNGNG
float sum=0.0;//float実数型(doubleでもよし)
for(i=0; i<n; i++)//n個のデータのときはこう
  sum+=n[i];
0735733NGNG
734
ありがとうございました
0736デフォルトの名無しさんNGNG
int ii:
int nn=0;

for(ii=0; ii<i; ii++ ){
  nn = n[ii];
}
0737734NGNG
ごめん
n[],n一緒に使えないじゃん。直しといて。逝って来ます。
0738デフォルトの名無しさんNGNG
>>736
>>734から2分遅れの上に間違ってる
>   nn = n[ii];
nn += n[ii];
0739デフォルトの名無しさんNGNG
>>738
>>733 の「各々の実数を」と言うところは、直さなくていいのか ?
0740_NGNG
<突然ですがここで問題です。>

和宛ゲームの作成!
仕様:ある任意の数(固定)をプレイヤーは当てます。任意の数字は1〜100
 答えられる回数は10回。プレイヤーは答えるたびにあとチャンスはn回
 です。との情報を受ける。
 外れた場合は入力した数字が任意の数字より大きいか小さいか知らせる。
 10回のチャンスがなくなるまでつづく。

    以上
0741デフォルトの名無しさんNGNG
>>740
課題丸投げするなボケ!
0742デフォルトの名無しさんNGNG
> <突然ですがここで問題です。>

こんな切り出し方するヤシは放置。何様だ?
0743デフォルトの名無しさんNGNG
「和宛ゲーム」の読みを当てるのが問題ですか?
0744デフォルトの名無しさんNGNG
つーか普通に宿題スレ逝け。
0745デフォルトの名無しさんNGNG
それって、ゲームとして成立するの?
絶対、解けるじゃん。
0746デフォルトの名無しさんNGNG
>>745
確かにそうだな。まあいいよ。ネタは放置。
0747デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main() { int r, input, count = 10; srand( time(NULL) ); r = rand()%100; do{
printf("アト%dカイ\n",count); scanf("%d", &input); if( r == input ) break;
printf("%sイデス\n",input > r ? "オオキ" : "チイサ"); }while( --count );
if( count == 0 ) printf ("ザンネンデシタ\n"); else printf("セイカイデス\n"); return 0;}
0748デフォルトの名無しさんNGNG
>>747
七行スレにでも投稿する?
0749デフォルトの名無しさんNGNG
2^10=1024だから解ける。
0750デフォルトの名無しさんNGNG
>>749
惜しい
0751まーヴぉーNGNG
このサイトの「C言語を始めるには」
わかりやすい!?あふぉか!!!
しかも出来たばっかだしw
http://s1.buttobi.net/hiloshi/
0752デフォルトの名無しさんNGNG
とりあえず一行縮めてみた。

main(){int r,i,c=10;srand(time(NULL));r=rand()%100+1;do{printf("アト%dカイ\n",c);
scanf("%d",&i);if(r==i)return puts("セイカイデス"); printf("%sイデス\n",i>r?"オオキ":
"チイサ");}while(--c); return puts("ザンネンデシタ");}
0753デフォルトの名無しさんNGNG
>>752
スレ違い
0754デフォルトの名無しさんNGNG
>>751
ワラタ。
つーか、イカスじゃねえか。そのサイト。
YOっしゃ。削除依頼だしてこい。
0755デフォルトの名無しさんNGNG
>>751
下手な解説サイトより、笑えてイイ。
つづきはあるのか?
0756740NGNG
数と言えば自然数しか思い浮かばない
ヴァカどもばかりだな、ここは・・・
0757デフォルトの名無しさんNGNG
自然数に0が含まれるかどうかの議論しようぜ
0758749NGNG
なるほど、3.14157とかされると解けんなw
小数点以下第1位までなら解けるってとこか
0759デフォルトの名無しさんNGNG
>>757
よし、じゃぁ、含まれる。
なぜなら、テストで0点取ったことがあるから。
まさにしzうぇんたい。
0760デフォルトの名無しさんNGNG
議論するものなのか?自然数・・・
0761740NGNG
>>756
出題の意図を常識の範囲で読み取る能力もないクズ
よりはマシだろうけどな。
0762デフォルトの名無しさんNGNG
>>760
0が含まれると主張している人たちもいた
電波系というわけでなく・・・
0763デフォルトの名無しさんNGNG
>>756
無理数だったらヤだな…
0764デフォルトの名無しさんNGNG
>>763
無理数は無理っす

とかいったりして ギャハー
0765デフォルトの名無しさんNGNG
無理数って酷い訳語だよな
0766デフォルトの名無しさんNGNG
正の整数←→自然数
っていう定義じゃないの?
定義だから議論の余地なしだと思っていたのですが…

>>751
>2chに宣伝したっけ予想以上の反響が!
宣伝かYO!
0767デフォルトの名無しさんNGNG
>>751
すげー面白かったYO!
この調子で進んでいってほしいYO

とりあえず、ヲチして間違っていると思われるところは
どんどんつっこみを入れていくことにしよう
0768デフォルトの名無しさんNGNG
>>751
> 何も言わずに、「cd my documents」と入力しろ
普通「指定されたパスは見つかりません」と表示されるが、
君は本当にコンパイルできたのか小一時間問いつめたい。
「cd "my documents"」
じゃないのか?
0769デフォルトの名無しさんNGNG
>>752
本体を更に縮めてみるテスト。関係ないのでsage。
#include<stdio.h>
#include<time.h>
main(){int r,i,c=10;r=time(0)*79%100+1;do{scanf("%d",&i);printf("%sイデス\n",r-i?
"セイカ":i<r?"チイサ":"オオキ");}while(--c);return puts(c?"":"ザンネンデシタ");}
0770デフォルトの名無しさんNGNG
>>768
多分マイドキュメントに保存しろと言いながら、自分では他のところに保存しいるんでしょ。
0771デフォルトの名無しさんNGNG
>>769
なんでrand使うのやめたんだ?(^_^;)
0772769NGNG
>771
短くしたいから。
0773デフォルトの名無しさんNGNG
プログラムを実行し始めてからの時間を返すclockという関数がありますよね?
あれは時間がclock_t型で表せる最大の数を超えたら間違った値が返ってくるんですか?
0774デフォルトの名無しさんNGNG
>>773
表現できる限界を超えても正しい値が返ってくるすげぇ実装方法があったら教えてプリーズ
0775デフォルトの名無しさんNGNG
>>774
GENKAI TOPPA
KYOなら出来る
0776773NGNG
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/clock.3.html

よく見たら-1が返るって書いてあった。
以前見たときは書いてなかった気がしたけど、、、、
0777デフォルトの名無しさんNGNG
777get
0778デフォルトの名無しさんNGNG
>表現できる限界を超えても正しい値が返ってくる
そもそも論理的にこの文章は矛盾しているかと・・・
0779デフォルトの名無しさんNGNG
60cm浮き上がるタンはもうこないのでしょうか
0780デフォルトの名無しさんNGNG
DOS窓にグラフィックを描くという冗談をまだやっているのか気になる
0781デフォルトの名無しさんNGNG
AAですか?
0782デフォルトの名無しさんNGNG
いや、違う
0783デフォルトの名無しさんNGNG
>>775
こんなところでKYOスレの住人に会えるとは思わなかった・・
0784デフォルトの名無しさんNGNG
ストリングをある文字だけで埋めるルーチンをなるだけ簡単な形で作りたいんだけど。
これ位しか思いつかない。

strをcharでnum個だけ埋める。
#define fillstr(str, num, char) {int i;for (i=0;i<num;i++) str[i]=char; str[i]='
\0';}

もっと良い方法があったら教えて。
0785デフォルトの名無しさんNGNG
>>784
memset
0786デフォルトの名無しさんNGNG
正直、ネタにしか見えないんでマジレスする気にならん・・
親切なやつ教えてやれよ↓
0787デフォルトの名無しさんNGNG
>>784
memset(s, ch, strlen(s));
は?
0788デフォルトの名無しさんNGNG
memset()でいいと思うけど、>>787のstrlen()はマズイだろう。
memset(str, char, num); str[num] = '\0';
0789787NGNG
>>788
だね。
仕様を勘違いした。
0790デフォルトの名無しさんNGNG
sprintf
0791デフォルトの名無しさんNGNG
memsetってint型の配列のすべての要素を1とかで初期化したい時に使えないから嫌い。







そんなことが必要な時はあまりないけど。
0792デフォルトの名無しさんNGNG
> そんなことが必要な時はあまりないけど。

そう?そういうケースは結構あると思うけどな。
どうでもいいが無意味な空行はやめてくれ。
ウケると思ってるのかしらんが、読みにくくてウザイだけだ。
0793デフォルトの名無しさんNGNG
>>792
ごめんなさいね。
でも最後の行は無駄ですね。「どうでもいいが無意味な空行はやめてくれ。」だけで十分だと思います。
0794デフォルトの名無しさんNGNG
>>793
まあいいだろう。
でも最後の行は無駄ですね。謝るなら謝るだけにしろ。この糞が。
0795デフォルトの名無しさんNGNG
>>784 strset()
0796デフォルトの名無しさんNGNG
>>791intset()(w
0797高粘性ゲーム脳NGNG
>>783
KYOスレって何ですか?
0798デフォルトの名無しさんNGNG
>>797
少年マガジンで連載中の江戸時代を舞台とした超能力漫画。

刀からカマイタチが巻き起こり、火を噴いたりするのはもちろん
絶対零度以下の冷気や最近はブラックホールも出ました。
彼らはいつもいろいろな限界を突破します。
0799デフォルトの名無しさんNGNG
いくつか質問させて頂きます。
1、文字の色を変えるにはどうやればよいですか。
2、printf関数のようなものを作りたいのですが、引数が"で囲まれているようなものはどうやるのですか。
0800デフォルトの名無しさんNGNG
>>799
1についてですができません。
2についてですが、作れません。
0801デフォルトの名無しさんNGNG
お願いです。
conio.hのgetch関数の内容を教えて下さい。
0802デフォルトの名無しさんNGNG
>>799
1
printf("<FONT COLOR=\"#ff0000\">赤です。</FONT>\n");

2
const char *
0803デフォルトの名無しさんNGNG
>>801
1文字取得
0804デフォルトの名無しさんNGNG
>>799
1についてですが、環境依存ですができます。「エスケープシーケンス」でgoogle
2についてですが、引数が""で囲まれている場合は文字列とみなされアドレスが渡されます。
0805デフォルトの名無しさんNGNG
>>800
バカ?
0806801NGNG
>>803
puts関数ですか?
0807デフォルトの名無しさんNGNG
>>806
キーを押すとすぐに反応する。
エコーなしに一文字読む。
エコーありはgetche。

だったかな。
0808デフォルトの名無しさんNGNG
>>807
お願いです。
次はkbhit関数の内容を教えて下さい。
0809デフォルトの名無しさんNGNG
>>807
その次はoutp関数の内容を。
0810デフォルトの名無しさんNGNG
次は僕の質問に答えてください。
WSAStartup関数の内容、使い方、サンプルソース。
0811デフォルトの名無しさんNGNG
int 21hについて教えてください・・・
0812デフォルトの名無しさんNGNG
次はlistenの内容、使い方を丁寧に教えてもらおうか。
0813デフォルトの名無しさんNGNG
forkのつかいかたが分かりません
0814デフォルトの名無しさんNGNG
>>810
一応、マジレスしとくか
http://msdn.microsoft.com/library/en-us/winsock/winsock/wsastartup_2.asp
0815デフォルトの名無しさんNGNG
>>813
手で握ってさしたりすくったりするだけだろ
0816812NGNG
810や813は答えてもらっているのに、おいらは放置! ウワァァン
0817デフォルトの名無しさんNGNG
>>813
これを読め、
http://www.sigoto.co.jp/hotel/tablemanners/manners/teblemanners6.htm
0818デフォルトの名無しさんNGNG
>>816
http://www.listen.co.jp/hp_get_info.xtp?path=guide/hp_main.jsp
0819813NGNG
>>815 >>817
ありがとうございます!参考にします!

>>812
( ´,_ゝ`)
082060cm浮き上がるストレートNGNG
>>801
キー入力があるまでgetch()の所でプログラムが止まります。
キーが押されるとバッファからキーの番号取り出し、それを戻り値として返します。
取り出したキーはバッファから消えます。
使い方の例を書きます。参考にしてください。
1、終了間際にgetch()を書いて何かボタンを押すと終了するようにする。
void main( void )
{
  ・・・
  printf("何かボタンを押してください。終了します。");
  getch();
  return;
}

2、ロープレなどで、1を押すと城へ行く、2を押すと町へ行く等と
  ユーザーの入力によって分岐させたいとき、
  scanf()やgets()の代わりにgetch()を使うとEnterキーを省略できる。
  scanf("%c",&key); → key=getch();
  if( key == '1' ) 「城へ行く処理」;
  if( key == '2' ) 「町へ行く処理」;

3、アクションゲームなどプログラムが止まると困ってしまう場合は、
  kbhit()をいっしょに使う。kbhit()はバッファにキーがあるかを調べて
  バッファにキーがあると1以外を返し、無いと0を返す。
  if( kbhit() != 0 )
  {
    key = getch() ;
    if( key == '+' ) 「ジャンプの処理」;
    if( key == '6' ) 「右へ移動する処理」;
  }
0821デフォルトの名無しさんNGNG
キターーーーーーーーーーーーーーーー!!!!!
0822808NGNG
>>820
その調子でconio.hに定義されている関数を全て教えてください。
0823デフォルトの名無しさんNGNG
>>820
すっげーいい。とくにアクションの例が。
実験してみるよ。
0824デフォルトの名無しさんNGNG
>>820
DOS窓グラフィックはどうなった?
0825デフォルトの名無しさんNGNG
C言語を使ってプログラミングしたいんですけど
フリーソフトでおすすめのものってありますか?
0826デフォルトの名無しさんNGNG
>>825
LSIC試食版
0827デフォルトの名無しさんNGNG
>>825
>>2あたりも読めないような奴に勧められるものはない
0828デフォルトの名無しさんNGNG
>>825
フリーなPC-UNIX入れれば?
0829デフォルトの名無しさんNGNG
すいませんマルチになります。
web板の方が寂しいのでこちらでCGIに関するC言語のサーバー設定を聞いても
いいでしょうか?こちらの方が詳しそうな人が多そうなので…
だめなら消えます。
0830デフォルトの名無しさんNGNG
C言語のサーバーってなんやー?
0831デフォルトの名無しさんNGNG
>>829
激しくスレ違いな気がするが、質問ならageて。
0832デフォルトの名無しさんNGNG
コンパイラが進化した・・・

warning C4553: '==' : 演算子にプログラム上の作用がありません。'=' を意図しましたか?
0833829NGNG
聞いていいのかな?
思いっきりスレ違いは覚悟しておりますが、多分詳しい人多そうなので
教えて下さい。
IISでCGIを動かしたところperlは動くのですがCは動かないのです。
昨日までは動いていたのですが設定をいじったところ、今日は動かなくなりました。
ローカルでコンパイルしたものを.CGIに変えてあげています。
その際、C言語だと特別な設定が必要なのか教えて下さい。
本当にスレ違いでマルチで申し訳ないのですが、ここしかもう頼るところが
ありません。お願いします。
0834デフォルトの名無しさんNGNG
>>833
>昨日までは動いていたのですが
では必ず動くはず。
>設定をいじったところ、今日は動かなくなりました。
その変更を元に戻してください。

これで解決できなかったら、Webプログラム板に逝ってください。
0835デフォルトの名無しさんNGNG
>>833
>昨日までは動いていた
昨日は,全ての条件について試したのかな?
動くと思っていても,どこかに落とし穴があるかも









なんてね
0836デフォルトの名無しさんNGNG
そうか、memsetがありましたね。
thx!>教えてくれた人
0837------------------さんNGNG
ポインタはどういうものかは分かったが使い道がわからない。
例えば /* 関数とポインタをつかった勉強プログラム */
#include <stdio.h >
void z(int *g)
{
if (*g<50)
*g=50;
}
int main (void)
{
int a=10;
int b=20;
int c;
printf("c=?");
scanf ("%d",&c);
z(&c); /* すなわち g=&c */
printf("a=%d\n",a);
printf("b=%d\n",b);
printf("c=%d\n",c);
return (0);
}
0838------------------さんNGNG
つづき、 
で、なにもポインタを使わなくても以下のようにできてしまうような気がするのですが
#include <stdio.h >
void z(int c)
{
if (c<50)
c=50;
}
int main (void)
{
int a=10;
int b=20;
int c;
printf("c=?");
scanf ("%d",&c);
z(c);
printf("a=%d\n",a);
printf("b=%d\n",b);
printf("c=%d\n",c);
return (0);
}
0839デフォルトの名無しさんNGNG
気がするのですか、そうですか、良かったですね。
0840nanashiNGNG
 99999以下とは限らない正の整数を次々と読み、データの個数と最小値、
2番めに小さい値および3番目に小さい値を印字するプログラムを作れ。ただし、
データがつきたことをあらわすために、0または負の数を入力することにする。

このアルゴリズムのを書いてください。流れ図でも箇条書きでもよいです。

 
0841------------------さんNGNG
あ、てか自分でわかったかも
ポインタつかわないと
void z(int c)のcと下のcは別物あつかいみたいになってしまう??
0842デフォルトの名無しさんNGNG
宿題は宿題スレへ逝け。
ただし丸投げする前にすこしは自分で考えろ。
0843nanashiNGNG
逝ってきます
0844------------------さんNGNG
てか受け渡しっぱなしでcに帰ってこないか。
あー自分でわかりました。
0845デフォルトの名無しさんNGNG
最小値の表し方は?
0846デフォルトの名無しさんNGNG
>>845
(・∀・)?
0847デフォルトの名無しさんNGNG
>>845
くすっ。コボラーしねよ。
0848デフォルトの名無しさんNGNG
コボラーってなんですか?
0849デフォルトの名無しさんNGNG
>>848
コボルする奴。
0850デフォルトの名無しさんNGNG
>>845
limits.hを調べるべし
0851デフォルトの名無しさんNGNG
>>840
最大値、2番目に大きい数、3番目に大きい数を初期化する
カウンタを初期化する
1. 0か負数が入力されるまで繰り返し
  1.1.入力値が1番目に小さい数かどうか調べ、
    1番目に小さい数未満の場合、1番目に小さい数と入力値を交換する。
  1.2.入力値が2番目に小さい数かどうか調べ、
    2番目に小さい数未満の場合、2番目に小さい数と入力値を交換する。
  1.3.入力値が3番目に小さい数かどうか調べ、
    3番目に小さい数未満の場合、3番目に小さい数と入力値を交換する。
  1.4.カウンタをカウントUPする
2.データの個数と最小値、2番めに小さい値および3番目に小さい値を印字する

※1.1.〜1.3.は処理が非常によく似ているので関数にするのが望ましい
0852デフォルトの名無しさんNGNG
>>851
交換した後、ずらす処理が必要では?
0853デフォルトの名無しさんNGNG
>>851
1番目に数値が入るとき、入れる前に、
2番目の値を3番目に、1番目の値を2番目に入れたりせなあかんよ。
0854デフォルトの名無しさんNGNG
C言語をやりはじめたばかりの者です。独習Cをやっているのですが、
いくら読んでも腑に落ちなくて、困り果ててのカキコです。
以下のプログラムは123と表示するだけのものなのですが、説明文に
よるとmain()がfunc2()を呼び出し、次にfunc2()がfunc1()を呼び出す
となっています。問題はfunc2()がfunc1()を呼び出すというところです。
どうしてfunc2()がfunc1()を呼び出してくれるのですか? 
たぶんすごく初歩的なことなのでしょうけれど理解できません。
これは単にそういう約束だと思えばいいのでしょうか。
教えてください。

#include <stdio.h>
void func1(void); /*プロトタイプ宣言*/
void func2(void);

int main(void) /*プログラムの開始位置*/
{ func2(); printf("3 ");
return 0; }

void func2(void)
{ func1(); printf("2 "); }

void func1(void)
{printf("1 ");}
0855デフォルトの名無しさんNGNG
>どうしてfunc2()がfunc1()を呼び出してくれるのですか? 
...
> void func2(void)
>{ func1(); printf("2 "); }
  ~~~~~~~
func1()を呼び出しせって書いてあるやん。
0856デフォルトの名無しさんNGNG
>>854
func2()関数の中にfunc1()の呼び出しがあるから。
void func2(void)
{ 
func1();    ←ここ
printf("2 "); 
}
0857デフォルトの名無しさんNGNG
>>854
mainがfunc2を呼び出してるのは理解できて
func2がfunc1を呼ぶ出すのは理解できないのか?


・・・・不思議だ・・・
0858デフォルトの名無しさんNGNG
>855>856>857さん。ありがとうございます。
おかげさまで、だいぶ分りました。なんていうか数字の順番で物事を考える
癖が抜けきらないというか・・・・・。一番の次は二番だろという
ような。
つまりmainは直後のfunc2()を呼び出し、その下のvoid func2(void)
に行きvoid func2(void) はfunc1();で1番下のfunc1();に
流れて最後に1まで行って表示して、またfunc2()戻って今度は2を
表示して、それでmainが最後に3を表示するということで、いいんですか。
0859デフォルトの名無しさんNGNG
>>858
合ってます。
0860デフォルトの名無しさんNGNG
>>858
定義順と呼び出し順に相関関係はないよ
0861デフォルトの名無しさんNGNG
#include <stdio.h>
void mona(void); /*プロトタイプ宣言*/
void giko(void);

int main(void) /*プログラムの開始位置*/
{ giko(); printf("2ちゃんねる");
return 0; }

void giko(void)
{ mona(); printf("ギコ "); }

void mona(void)
{printf("モナー ");}

なら問題なく理解できたと言うことなのかなぁ。
0862854NGNG
>860 定義順と呼び出し順に相関関係はないよ

そのようですね。さっき試したら問題なく表示されました。
まだプログラムの流れをすんなり掴めていないみたいなので、
もっとたくさん練習してそういうことが分るようにがんばります。
0863851NGNG
>>852-853
頭の悪いお前らは、交換してしまえばずらす必要がないことが
理解できないようだな。じゃあこのソースを見ても無駄か(w
#include <stdio.h>
#include <limits.h>
static void swap(int *n, int *m);
int main(void)
{
  int n, min1, min2, min3;
  int cnt = 0;
  min1 = min2 = min3 = INT_MAX;
  while(scanf(" %d", &n) == 1 && n > 0) {
    if(n < min1) swap(&n, &min1);
    if(n < min2) swap(&n, &min2);
    if(n < min3) swap(&n, &min3);
    cnt++;
  }
  printf("cnt = %d, min1 = %d, min2 = %d, min3 = %d\n",
      cnt, min1, min2, min3);
  return 0;
}
static void swap(int *n, int *m)
{
  int tmp;
  tmp = *n; *n = *m; *m = tmp;
}
0864デフォルトの名無しさんNGNG
Cでの構造体の宣言についてお訊きしたいのですが、
typedef struct fooA {
int tmp ;
fooB *whole ;
} fooA ;

typedef fooB {
fooA instance1 ;
fooA instance2 ;
} fooB ;

このような場合、どのように宣言するとコンパイルが通るのでしょうか。
0865デフォルトの名無しさんNGNG
struct fooB;

typedef struct fooA {
int tmp;
fooB* whole;
} fooA ;

typedef struct fooB {
fooA instance1;
fooA instance2;
} fooB;
0866デフォルトの名無しさんNGNG
struct fooA{
int tmp ;
struct fooB *whole ;
} ;

struct fooB {
struct fooA instance1 ;
struct fooA instance2 ;
} ;
0867864NGNG
>>865, >>866
thanks !
0868デフォルトの名無しさんNGNG
*.iniファイルへの値の書きこみ、値の取得はどのようにすればいいんですか?
0869デフォルトの名無しさんNGNG
>>863
…アルゴリズム変わってないか?
0870デフォルトの名無しさんNGNG
>>868
どうせWindowsだろうからコレでも使っとけ
ttp://www.mars.dti.ne.jp/~suzunari/suz/suzsoft/regini_readme.htm
0871デフォルトの名無しさんNGNG
C言語で行列→逆行列にするプログラムってどのように作ればよいのでしょうか?
誰か教えてくれませんか?
0872デフォルトの名無しさんNGNG
マルチカコ(・∀・)イイ!
0873デフォルトの名無しさんNGNG
main()関数の引数の argc と argv の
言葉の意味はそれぞれどんな意味があるんですか。
0874デフォルトの名無しさんNGNG
>>871
http://www.sra.co.jp/people/miyata/algorithm/
0875デフォルトの名無しさんNGNG
argument_count
argument_value
0876デフォルトの名無しさんNGNG
CでCのコンパイラを作りたいのですが、どういう仕組みなのですか?
0877デフォルトの名無しさんNGNG
argument_vector no yokan
0878デフォルトの名無しさんNGNG
vector な罠
0879デフォルトの名無しさんNGNG
>>876
main()を最初に処理する
0880デフォルトの名無しさんNGNG
kekooooon
0881デフォルトの名無しさんNGNG
>>876
ギコBASICを参考にしろ
0882875NGNG
知ってたけどね
0883デフォルトの名無しさんNGNG
ハイハイ
0884デフォルトの名無しさんNGNG
返事は1回
0885デフォルトの名無しさんNGNG
ハーーーーーーーーーーーーーイ
0886デフォルトの名無しさんNGNG
(・∀・)
0887デフォルトの名無しさんNGNG
>>876
こっちのスレで聞くがよいかと。

『コンパイラ・スクリプトエンジン』 相談室 2
http://pc3.2ch.net/test/read.cgi/tech/1021136715/
0888デフォルトの名無しさんNGNG
std::

ってなに
0889デフォルトの名無しさんNGNG
>>888
> std::
さぁ?Cにはそんなものないよ
0890デフォルトの名無しさんNGNG
>>889
C++だけならまだいいです。どうも
0891デフォルトの名無しさんNGNG
>>863
ずらしてるじゃん
0892デフォルトの名無しさんNGNG
>>851
つか、リングバッファ使えばいいのでは?
0893892NGNG
ごめんなさい、よくありませんでした。反省します。
0894デフォルトの名無しさんNGNG
main()
{
int m,n;
n=3;
m=n++

printf("%d-%d",n,m);

return 0;
}

が、4-3となる理由がわからん。だってn=3っていってるのになぜに4って言うの?
俺ってバカ?
租借して租借して説明してくれる人。おながいします。
0895デフォルトの名無しさんNGNG
m=n++
でnがインクリメントされてる
0896デフォルトの名無しさんNGNG
>>894
> 4-3となる理由がわからん。
俺は m=n++ の最後にセミコロンがないのにコンパイルできる理由がわからん。
0897デフォルトの名無しさんNGNG
n++;
++n;
上記はどちらも n に1を足しなさいという意味

m=n++;
まず n の値を m に代入してから n に1を足すという
意味

m=++n;
まず n に1を足してから、その値を m に代入しなさい
という意味
0898デフォルトの名無しさんNGNG
mはどちらも同じ数字になりますよね?

でもなんでn自体の値が変わるのかがわかりません。
だってnは3っていったじゃん。

;忘れました。ごめんなさい。ごめんなさい。ごめんなさい。
0899デフォルトの名無しさんNGNG
>>898
>>895は読んだ?
0900デフォルトの名無しさんNGNG
>>898
まずプログラムの基本ができてない気がする。
数学では n=3 と書いたら紛れも無く n=3 だが、プログラムでは
n の値は刻一刻と変化すると考えてください。

n = 3;
m = n + 5;
n = m;
printf("n = %d",n);

こう書いたら、上から順番に解釈されていって n = 8 と表示される。
0901デフォルトの名無しさんNGNG
>>900

ありがとう。ございます。

とってもありがたい説明です。

なんだかやる気が出てきました。

ほかの皆さんもありがとう。ちゅっ
0902デフォルトの名無しさんNGNG
m=n++ならmは4じゃないのはなぜ? なしてmが3になったの? もちろん実行してみたんだけど、おいらもわからん。
0903デフォルトの名無しさんNGNG
>>902
m=n++;
 ↓
m=n;
n++;


n=++n;
 ↓
m=n+1;
0904デフォルトの名無しさんNGNG
>>903
おい、間違えてるぞ
0905デフォルトの名無しさんNGNG
>>903
> n=++n;

?? また、未定...。
0906デフォルトの名無しさんNGNG
>>903
なんか違うな
0907デフォルトの名無しさんNGNG
>>903
m=++n;
 ↓
++n;
m=n;
だろが
0908デフォルトの名無しさんNGNG
:ま  た  未  定  義  か :02
0909デフォルトの名無しさんNGNG
システムファイルの中身をぐちゃぐちゃにするプログラム作ってもいいですか
0910デフォルトの名無しさんNGNG
もうCスレの代名詞だね「また未定義か」。
次スレの副題に付けるか?

C言語なら俺に聞け「また未定義か」 <1>
0911デフォルトの名無しさんNGNG
C言語に将来はありますか?
0912デフォルトの名無しさんNGNG
>>909
おれが書いてやる

FILE* fp = fopen("システムファイル", "w");
fputs("ぐちゃぐちゃ", fp);
fclose(fp);

どうよ?
0913デフォルトの名無しさんNGNG
>>911
君の将来よりはまし
0914デフォルトの名無しさんNGNG
>>912
ありがとうございます!
0915912NGNG
人に感謝されるというのは気持ちのよいことだ・・・
0916デフォルトの名無しさんNGNG
なんでCスレはすぐにネタスレになるんだろうなぁ
0917デフォルトの名無しさんNGNG
みんなCが好きだから
0918デフォルトの名無しさんNGNG
やっぱりBよりもCの方がいいからね
もちろんプログラム言語の話だよ。
0919デフォルトの名無しさんNGNG
俺はB言語を使っていたから難なくC言語を覚えられたよ。
0920デフォルトの名無しさんNGNG
>>898はプログラマーですか?
C言語を習い始めて1時間経った人よりお馬鹿です。(合掌)
0921デフォルトの名無しさんNGNG
最初はかるーくA
次にイヤンB
ウハウハのC
最後はムフフDで合掌。
0922デフォルトの名無しさんNGNG
みんなオラにちょっとずつ力を分けてくれ。

スタックをモデルにしたプログラム作ってけろ ^^
0923デフォルトの名無しさんNGNG
>922
ちょっとづつな。
int
0924名無しさん@XEmacsNGNG
スタックをモデルにしたプログラムって何?
0925デフォルトの名無しさんNGNG
Forthとか、PostScriptとか?
0926デフォルトの名無しさんNGNG
              少しは右側使えよ
              はじめてのC
0927デフォルトの名無しさんNGNG
>>922
54*12/+
0928デフォルトの名無しさんNGNG
>>921
Ada > Basic > C > Delphi ??
波瀾万丈の言語歴だね
0929デフォルトの名無しさんNGNG
FILE *fp;
char mona[10];
char giko;
int ret;


ret = fread ( &giko,sizeof(giko),1,fp );
printf ("%d\n",ret );

としたときretに0しか入りません。
引数でファイル渡していて、そのファイルには確実に
数バイト書き込まれているはずなのに"0"しか返ってきません。
freadって読み込んだバイト数を戻り値として返すんですよね?

0930デフォルトの名無しさんNGNG
>>929
freadが返すのは読み込んだ要素数だ。
0931デフォルトの名無しさんNGNG
>>929
その部分だけを見ると間違ってないみたい。
あとはfopenとか、その後の処理がどうなっているかだね。
0932デフォルトの名無しさんNGNG
fopenに失敗しているまたはfopenそのものを忘れている
0933デフォルトの名無しさんNGNG
char *zonu;
char *str="abcdefghi";
int val;

zonu=(char*)malloc(func()+1);
strncpy(zonu,str,func());

便宜上func()は3を返すとします。つまり
zonu=(char*)malloc(4);
strncpy(zonu,str,3);
このあとstrncpyだとヌルが
自動付加されないんですが
どうすればヌルを付けれますか?
0934デフォルトの名無しさんNGNG
strncpyは挙動があやしいというか仕様が古い
callocで0で初期化しといたら?
0935デフォルトの名無しさんNGNG
>>934
うまく逝きました。サンクスレス
0936デフォルトの名無しさんNGNG
おれはmemcpyと終端'\0'代入をお勧めする。
0937デフォルトの名無しさんNGNG
初期化めんどいときはstrncpy+終端\0

strncpyってsourceの文字列がdestinationの
バッファサイズ未満の場合, 残り全部を\0で埋めるんだよね
なぜなんでしょう?
0938デフォルトの名無しさんNGNG
>>937
・C FAQ 日本語訳
に書いてるよ。
0939デフォルトの名無しさんNGNG
>>938
サンクス

疑問なのはこちらです
>>strncpy()の関連する奇妙なところは、
>>指定された長さになるまで\0を埋めることである

strcpyみたいに1個だけ\0を埋めるだけじゃ駄目なのかなぁ?
0940デフォルトの名無しさんNGNG
c言語でネットワークなプログラムのことをしりたいのですが
どのような書籍がお奨めでしょうか
TCP/IPプログラミング
などいろいろな本があるみたいですが
いろいろあるのでうかつに買えません
教えてください
0941デフォルトの名無しさんNGNG
すみません。どうしても結論がでないので、お聞きします。

(1)メモリ上のデータの先頭アドレスを「ポインタ」と呼ぶのですか?

倉薫の本を読むと、書籍の前半では、ある変数の(先頭)アドレスを記憶させる変数が「ポインタ」と説明が
してあるのに、文字列処理関数群の説明当たりでは、コード中に書き込んであったり、gets()で取得した文字列の
先頭アドレスが「ポインタ」みたいな説明になっています。とにかくデータの先頭アドレスを「ポインタ」というので
すか?


(2)gets()などで文字列を習得すると、メモリの特定領域に記憶されるわけで、それをプログラムで利用
するときには先頭アドレスが必要だと言うことは分かります。しかし、ソースコード内に「文字列リテラル」みたいな
形で文字列が書き込まれているとき、その先頭アドレスの取得が必要なのですか?
そもそも、コンパイル後のリテラルの扱いはどうなっているのですか?一般のコードの中に埋め込まれているのですか?
0942デフォルトの名無しさんNGNG
>941
アドレスを入れる変数がポインタ型
関数にポインタ「型変数」を渡すと書いてあってもおかしくないのでは
0943デフォルトの名無しさんNGNG
>>941
CPUがどんな風に働いてるのかを勉強したらすぐわかると思うわれ(レジストリな)
ポインタって言葉は、「アドレスを渡すとか、アドレスを扱う」ってニュアンスだとわかりやすいんじゃね?
ちなみに、gets()関数の引数には、ポインタを返すって決まりだったと思う
文字列関係のポインタは、基本的に先頭アドレスを渡す。
おそらく図柄を見てイメージができてるとわかると思うんだがなー
0944デフォルトの名無しさんNGNG
>>941
文字列リテラルは別のところに集められるのが普通。
コンパイル後のバイナリをバイナリエディタなどで見るとわかると思う。
(アセンブラわかるのならアセンブラコード見てもいいと思うけど)

プログラム実行時には実行ファイルから文字列リテラルをメモリ内に読み
込んでその先頭アドレスを使用する。
0945デフォルトの名無しさんNGNG
>>943
レジストリ?
0946944NGNG
文字列リテラルをメモリ内に読み込むのはOSな。
0947デフォルトの名無しさんNGNG
>>942

function(文字列のポインタ、文字列のポインタ)
↓
function(str,"なんなのこれ")

みたいな説明になってるんだけど、変数strの識別子が先頭アドレスを表すことは分かるけど、
”文字列”を直接関数に引数で渡すと、ポインタを渡したってことになるわけ?
0948デフォルトの名無しさんNGNG
>>947
そうなる。
0949943NGNG
>>945
すまん・・・レジスタな
0950デフォルトの名無しさんNGNG
いまきづいたのだけど、本によって

「ポインタ」「ポインタ変数」が別扱いのものと同義語のものがある。
0951デフォルトの名無しさんNGNG
short array[] = {0,1,2,3};
short *arr_pt;
short i,j,num;

arr_pt = array;
for(i = 0; i < 4; i ++)
{
num = arr_pt[i];
printf("%d\n",num);
}
出力は 0123。
ポインターは銭湯アドレスつっても、
どこでもさせるようです。

char *string = "AHO";
文字列リテラルはテキストセグメントに確保さるようですが、
以後は別段stringをつかってください。
0952デフォルトの名無しさんNGNG
>>947
ダブルコーテーションで囲まれた"文字列定数"←は
つまりコンパイルの時点で(強引な表現をすれば)exeに埋め込まれるわけで
関数に文字列定数を渡すようなコーディングをした場合は
その文字列定数が、文字列定数が埋め込まれた場所を指すconst charポインタに
置き換えられていると思えば良いのではないかな
0953デフォルトの名無しさんNGNG
>>951
どうでもいいけど、どうしshort?
0954デフォルトの名無しさんNGNG
>>953
951の書き込みは全体的に良く分から
0955デフォルトの名無しさんNGNG
リテラル。セグメント。
初耳・・・どんな意味で?
0956951NGNG
僕に聞かれてもあんまりシランっす。

引っ張り出した本に書いてありますた。

--------------------
スタックセグメント // ローカル変数とか
↓

↑
ここから--------------
ヒープ // mallocにより動的確保

BBS // グローバル変数(初期値なし0)

データ // グローバル変数(初期値あり)
-----------------ここまで、データセグメント
テキストセグメント // プログラムのコード部分が
// おさめられている読み出し専用領域

てなふーに割り当てられるっちゅ−よーなことらしいです。




シランでもいいと思いますた。
0957デフォルトの名無しさんNGNG
>>956
それは個別の実装の話だから一般論として語るもんじゃないよ。
0958デフォルトの名無しさんNGNG
おsage。
わすれてた。
0959デフォルトの名無しさんNGNG
>>956
シランでもいいかどうかは時と場合によるが。
ついでに言うと、BSSだと思うが。BBSじゃなくて。
0960デフォルトの名無しさんNGNG
> 957

うぅ、
言われてみればLinux固有だと気がつきました。
あほなこと語ってしまいましたすみません。
0961デフォルトの名無しさんNGNG
>>970
次スレよろしこ
0962デフォルトの名無しさんNGNG
>どこでもさせるようです
arr_ptはarrayの先頭のアドレスを受け取っただけ。
arrayを宣言したときにその後ろに連続してデータが入るので、
arr_pt[i]で辿る事が出来る。
0963962追加NGNG
プログラムはarr_pt[i]=*(arr_pt+i)と解釈している。
0964デフォルトの名無しさんNGNG
i[arr_pt]
0965デフォルトの名無しさんNGNG
> 963

そうですよね。
ぽいんたーっていうと、ふつーそれしか思い当たらないので
>>941さんが銭湯アドレスって言葉にこだわって混乱してるのかと思って
ぽいんたーは銭湯アドレスを取得したら、
メモリー領域にアクセスするのに使えると思えばわかりやすいかと思ったら
なおさらわかりずらかったです。

それよりも、>951で不可解なのは、
変数 j の使い道だと思います。
0966デフォルトの名無しさんNGNG
>>894
s/租借/咀嚼/g
:)
0967デフォルトの名無しさんNGNG
2つの入出力があります。
入力ではselectを使いたいんだけど、出力はfprintfを使いたい。
つまり、このままではファイルポインタとファイルディスクリプタが
同居してしまうのですが、こういうばあいの
どこまでの操作なら安全でどこからの操作が危険か
というガイドラインはありますか?

そもそもFILE*使うなよ、というのはありますが まあそれは置いといて。
0968デフォルトの名無しさんNGNG
while ( fgets ( str,256,fp ) != NULL ) {
getchar ();
printf ( "%s",str );
}
fpで示すファイルを一行づつ読みこんで
Enter押すまで止めておくプログラムです。
例えばファイルの中身が
123
4567
89
10
というもだとしてこのプログラムを実行すると
123

4567
1行スペースが空いてしまいます。
fgetsが復改文字も読みこむのが原因ですよね?
スペースの空かないプログラムを作りたいのですが・・・
strlenで長さを測って、最後尾の"\n"を取ればいいと思うのですが
各行で長さがちがうので困っております。
ご教授おながいします!
0969デフォルトの名無しさんNGNG
>>967
ファイルポインタから対応するディスクリプタ取り出せるよ。それ使えばOK
0970デフォルトの名無しさんNGNG
>>969
その方法を教えてください。
逆はfdopenでできますけど。
0971970NGNG
次スレたててきます。
0972デフォルトの名無しさんNGNG
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fileno.3.html
0973デフォルトの名無しさんNGNG
>>968
> fgetsが復改文字も読みこむのが原因ですよね?
いや、復改文字がエコーバックされるのが原因
でも、改行が取りたかったら
str[strlen(str) -1] = '\0';
とかしろ
0974デフォルトの名無しさんNGNG
>>972
ありがとうございます!

・・・・やっぱりFILE *からFDを得る関数があったんだ・・・・
0975デフォルトの名無しさんNGNG
http://pc3.2ch.net/test/read.cgi/tech/1034337064/

新スレたてました。
0976デフォルトの名無しさんNGNG
お疲れ様です
0977NEW THREADNGNG
http://pc3.2ch.net/test/read.cgi/tech/1034337064/l50
0978デフォルトの名無しさんNGNG
記念パピコV(^o^)V
0979デフォルトの名無しさんNGNG
1000いただいてもよろしいのですか?
0980デフォルトの名無しさんNGNG
for(i = 20;i > 0;i ++)
0981デフォルトの名無しさんNGNG
{
0982デフォルトの名無しさんNGNG
printf("%d\n", i+980);
0983デフォルトの名無しさんNGNG
exit(0);
0984デフォルトの名無しさんNGNG
いただいちゃってください
0985デフォルトの名無しさんNGNG
// >>983
// 終わらせるな!ヴォケ
0986デフォルトの名無しさんNGNG
// >>984
// エラー出すなヴォケ
0987デフォルトの名無しさんNGNG
}
0988デフォルトの名無しさんNGNG
void func(Object* nanika)
{
0989デフォルトの名無しさんNGNG
// 988さん、Object型の扱い方教えてくらはい
0990デフォルトの名無しさんNGNG
//>>980
//ループお椀ね円だよ!
0991デフォルトの名無しさんNGNG
return 0;
0992デフォルトの名無しさんNGNG
} // nanika は一度も使用されませんでした。
0993デフォルトの名無しさんNGNG
>>990
>>987で終わってるじゃ名井
0994デフォルトの名無しさんNGNG
994
0995デフォルトの名無しさんNGNG
まんこ
0996デフォルトの名無しさんNGNG
ちんこ
0997デフォルトの名無しさんNGNG
すっせんんー
0998デフォルトの名無しさんNGNG
せせせせせんんんー
0999デフォルトの名無しさんNGNG
999
1000デフォルトの名無しさんNGNG
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。