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

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

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

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

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

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

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

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

Cなら俺に訊け! Part 78
http://pc5.2ch.net/test/read.cgi/tech/1083651280/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
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/

【ライセンスや機能などに問題あり】
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
0003デフォルトの名無しさんNGNG
乙
0004デフォルトの名無しさんNGNG
>>1 の FAQ のリンクが移転だよ
0005デフォルトの名無しさんNGNG
http://www.kouno.jp/home/c_faq/
0006デフォルトの名無しさんNGNG
スレタイトルがださくなったな。
0007デフォルトの名無しさんNGNG
こっちでいいよ。
0008デフォルトの名無しさんNGNG
#include <sys/socket.h>
#include <resolv.h>

main(){
    int sd;
    sd=socket(PF_INET,SOCK_STREAM,0);
    return(0);
}

試しにこのようにして、Socket関数を呼び出して見たんですが、Linuxでは、コンパイル通るのですが、FreeBSDだと通りません。
/usr/include/resolv.h:104: error: field `nsaddr_list' has incomplete type
/usr/include/resolv.h:114: error: field `addr' has incomplete type
/usr/include/resolv.h:129: error: field `ina' has incomplete type
/usr/include/resolv.h:130: error: field `in6a' has incomplete type
エラーはこのように出ます。

FreeBSDの場合、他にヘッダファイルを指定しないといけないのでしょうか?
0009デフォルトの名無しさんNGNG
未定義のエラーごときでいちいち質問するな。
そんなものincludeディレクトリ内を検索して、該当するヘッダを見つければいいだけの話だろ。
なぜその程度の知恵すら無いんだ?
00108NGNG
すまん;
0011デフォルトの名無しさんNGNG
>>8
sys/types.hじゃないの?
00128NGNG
>>11
どうもです
#include <sys/fcntl.h>
#include <sys/types.h>
でいけました。
0013デフォルトの名無しさんNGNG
奢れるものは久しからず。
盛者必衰の理をあらわす。
001413NGNG
誤爆った。
0015デフォルトの名無しさんNGNG
独習Cを今やってるんですが、
この本を最後まで終わらせるとどのくらいの技術が身に付くんでしょうか?
メモ帳くらいは作れるようになりますかね?
0016デフォルトの名無しさんNGNG
むり。
「標準ライブラリ」とは何か。調べてみてください。
0017デフォルトの名無しさんNGNG
>>16
やっぱりそうですか・・・
GUIは難しそうですものね。
でも、それならばどの程度まで身に付くんでしょうか?
0018デフォルトの名無しさんNGNG
「標準ライブラリ」が使いこなせる程度です。
0019デフォルトの名無しさんNGNG
ほう、標準ライブラリですか。
それが理解できれば、あとは応用していくだけって感じなんでしょうか。
0020デフォルトの名無しさんNGNG
>>17
難しいとかいう話ではなく
単にGUIはCという言語規格でまったくカバーしていないため
すべて処理系依存の独自ライブラリで処理することになる。

従って言語とは別に処理系に対する知識が求められるだけ。
0021デフォルトの名無しさんNGNG
>>15
その本全部読んだあたりでは凡人になれる。
その後ソーティング、サーチ、データ構造なんかのアルゴリズムを身に付ければ初心者だな。
そこからは果てしない道のりがまってるが、とりあえずポインタをしっかり分かれば大抵のソースは読めるようになるだろう。
GUIやりたいならJavaが簡単だよ。
でもきちんとやりたいなら、Cをある程度やったあとにC++に移行した方がいい。
あとは時代の流れをみつつ、な。
0022デフォルトの名無しさんNGNG
標準規格にGUIがあるのって、JavaとC#だけかな?
0023デフォルトの名無しさんNGNG
SmallTalk...
0024デフォルトの名無しさんNGNG
忘れられまくりのSmalltalkかわいそう(´・ω・`)
0025デフォルトの名無しさんNGNG
っていうか、今、Cの勉強って意味ないと思う。
最初からC++でいいんじゃない?
無論、JAVAでも良い。C#は微妙。
0026デフォルトの名無しさんNGNG
>>25
いきなりC++だとどこから手付けていいのかわからなそうじゃん。
しかもC++の入門書ってあんまないし。VCならあるけど。
Cの入門書は出来がいいと思うのがあるから、意味ないとは思わないな。
いきなりC++出来るならそっちのほうがいいとは思うけど。
C#はありえないし、Javaだけってのもなんかやだ。
0027デフォルトの名無しさんNGNG
>>26
一応 Accelerated C++ がいきなりC++の入門書になるんじゃないかな。
http://www.amazon.co.jp/exec/obidos/ASIN/4894714221
まあCスレにふさわしい話題じゃなくなってきたが
0028デフォルトの名無しさんNGNG
>>27
スレ違いスマンが、アマゾンのレビューにもあるように、if文なんかの
基本事項は学べないみたい。
というわけで、Cを勉強中の人は安心してCに励んでください。
0029デフォルトの名無しさんNGNG
自分で関数を作ってそれを使用することってありますよね。
そういう時って、プログラムを組む前からどんな関数を作るかを
考えているんでしょうか?
それとも、作っていくうちにどんどん追加していくようなものなんでしょうか?
0030デフォルトの名無しさんNGNG
double型とlong double型の違いが良く分かりません

double型で15桁の数字の加算を繰り返していて
途中から1の位の値が正しく計算されなくなったんですが
long double型に変えたら正確に計算されるようになりました
何が原因なんでしょう
0031デフォルトの名無しさんNGNG
>>29
お好きにどうぞ。
0032デフォルトの名無しさんNGNG
>>30
精度
0033デフォルトの名無しさんNGNG
>>30
精度が違うから。
浮動小数点について、ググルなり本を読むなりして勉強しな。
0034デフォルトの名無しさんNGNG
ファイル間で共有するグローバル変数ってありますよね。
あんまりグローバル変数使わず、使うならそのグローバル
変数を読む関数を作って、できるだけファイル内のものは隠せっ
ていわれたんですけど、どういう
感じの関数にするのが妥当でしょうか?
0035デフォルトの名無しさんNGNG
>>34
多分set/getをつくれということだと思う・・・

sub.c
static int n;
void set(int i){ n=i; }
int get(void){ return n; }

main.c
set(4); /* sub.cのnに4をセット */
i=get(); /* sub.cのnの値を得る */
0036デフォルトの名無しさんNGNG
>>32-33
ありが�dございます

調べてみます
0037デフォルトの名無しさんNGNG
>>29
外部に公開する関数はある程度考えてから作ることが多いと思う
Cの範囲外だが、オブジェクト指向のクラスになればなおさらその傾向は強まる
static(ファイル内のみ)な関数は適当にポンポン追加されていく傾向が強い
適当に作った関数はstaticになる(するべき)って言い方でもまあ正しい

ある程度考えて作ってもあとで修正することが大半ってことも言っておく
0038デフォルトの名無しさんNGNG
>>29
「ことってある」んじゃなく、それがベース。
関数もプログラムだし、アプリもプログラム。
大きさの違いでしかない。
0039デフォルトの名無しさんNGNG
>>34
言語問わずSet*** Get***って名前の関数を使うのが慣習かな?
その関数の中で与えられた引数が有効範囲に存在するかどうかをチェックしてねん。
0040デフォルトの名無しさんNGNG
>>38
微妙に表現がおかしいような…
0041デフォルトの名無しさんNGNG
>>30
>long double型に変えたら正確に計算されるようになりました
君は一体何だと思って long double 使ったのかと。
0042デフォルトの名無しさんNGNG
>>39
有効範囲かどうかってのはどういうことですか?引数で指定した型よりもでかい
値かどうかってことですか?

それとグローバル変数が複数あるとき、一つ一つのグローバル変数に
対してget、set作ったほうがいいのでしょうか?そうするとそのset、get
はexternしないといけないわけで、なんかえらいことになってしまう気がします。
その辺の管理はどうなのでしょうか?
0043デフォルトの名無しさんNGNG
文字を入力して、逆から出力させるプログラムはどうしたらいいのでしょうか?
教えて下さい。お願いします。例えばopqrを入力してrqpoを出力する。
0044デフォルトの名無しさんNGNG
>>43
宿題は宿題スレへ。
ほんとうはCなんて全然わからないんでしょ?
0045デフォルトの名無しさんNGNG
>>42
有効範囲のことは、今は気にするな。別にそだけが目的でセッターゲッター作るわけじゃない。
で、ひとつひとつのグローバル変数に対してもちろん作る。
externしないといけないというのは意味わからん。
まさかヘッダーに書かずに、全てのソースにexternって書いてまわってるの?
0046デフォルトの名無しさんNGNG
もしくは関数のプロトタイプ宣言がデフォルトでexternになるということを知らないか…
0047デフォルトの名無しさんNGNG
>>42
グローバル変数が多くなる時は設計を疑ってみるといいよ。
もしくは構造体を作って複数のグローバル変数をまとめて管理したほうがいい。

でも、はじめは難しく考えずに作ればいいと思うよ。
で、不満が出た時にその不満を解消する方法を考えるか探せばいい。
get/setを作らなくてもいいと思うなら、無しでいいじゃん。
馬鹿にする意味じゃなくて、それが経験になる。
0048デフォルトの名無しさんNGNG
>>42
>有効範囲かどうかってのはどういうことですか?

そのグローバル変数が取り得る値の範囲内にあるか?
と言うことだろう。


>それとグローバル変数が複数あるとき、一つ一つのグローバル変数に
>対してget、set作ったほうがいいのでしょうか?そうするとそのset、get
>はexternしないといけないわけで、なんかえらいことになってしまう気がします。

数が増えてえらいことになる、と言う意味だとしたら、
きちんと設計すれば、そこまで多くのグローバル変数なんてまず必要ない。
0049デフォルトの名無しさんNGNG
>>47
そういう理論抜きの行き当たりばったりなやり方が現場を混乱させるんだよ全く迷惑な話だな
0050デフォルトの名無しさんNGNG
setter/getter作っちゃうと、グローバル変数が抱える問題の9割以上がまた表面化しちゃうんだがな。
0051デフォルトの名無しさんNGNG
>>49
たぶんあなたは文章を理解していない。
>>47は実際にやってみてその問題点を実感してからでも遅くは無いといっている。
恐らく>>34はまだ現場にはいないだろうという予想を用いて。
0052デフォルトの名無しさんNGNG
>>43
素直に後ろから順に表示していけばいい。
0053デフォルトの名無しさんNGNG
Cでsetter,getter作るくらいならC++使えばいいじゃん?
0054デフォルトの名無しさんNGNG
使えない環境もあるよ。
プロジェクトで決まってるとか
0055デフォルトの名無しさんNGNG
C言語初心者です。

数あてゲームを作っているんですが、rand関数でだした乱数とユーザーが入力した数値が+-5で おしい! と出したいんですがどうしても方法が思いつきません・・・
どなたかいいアイデアがあれば教えてください。
お願いします
( 答えより小さければ 「それは小さい」 大きければ 「それは大きい」 とまではできたのですが。。)
0056デフォルトの名無しさんNGNG
abs()使え
0057デフォルトの名無しさんNGNG
素直に2つ条件を書け( or で繋いで)
0058デフォルトの名無しさんNGNG
> でもプリプロセッサ行きにするとそれはそれで話が面倒になる?

実は1パスでやってるんですよ。わたしがそう設計したのですが。
0059デフォルトの名無しさんNGNG
>>58
誤爆か?
0060デフォルトの名無しさんNGNG
> どうしても方法が思いつきません・・・

気安く「どうしても」とかいうな。

どうしてもってのは「あらゆる方法をためしたが」という意味だ。
もしほんとうにそうなら、おまえはぜったい思いつかないんだろう。あきらめな
0061デフォルトの名無しさんNGNG
>>57
&&だな。

±5でなら、abs(a - b) == 5
±5以下なら、abs(a - b) <= 5
006255NGNG
>>56>>57
ありがとうございます
abs()がまだ勉強していないのでわかりませんでした・・・
絶対値を返すんだかなんだかですよね
それをどう使うかが・・
>>60
おっしゃるとおりだと思います
すみませんでした・・・・
あらゆる方法というほどまだ知識がなく私なりのあらゆる方法でこうしてみました
else if( num == ans +3 || num == ans +2 || num == ans +1)/* 答えより+3以内なら*/
↑
マイナスの文もつけて

みなさんありがとうございました

PS。数あてゲーム2日目を超えて3日目に入りそうです(笑
0063デフォルトの名無しさんNGNG
いろいろと突っ込みたくなるレスだな。
0064デフォルトの名無しさんNGNG
>>62
君の言う「あらゆる」と世間の「あらゆる」は違うようだね。
処で、比較演算子'>'や'<'はご存知ないかね。
0065デフォルトの名無しさんNGNG
このソースを読めばCのあらゆる文法が組み込まれていて
ためになるっていうのあったら紹介してくだせ〜
ガイシュツだったらスマソ
0066デフォルトの名無しさんNGNG
そんな都合の良い物ある訳が無い
0067デフォルトの名無しさんNGNG
>>65
gcc のソースでも読めばいいんじゃねのか?
0068デフォルトの名無しさんNGNG
GNU helloとか。
0069デフォルトの名無しさんNGNG
unixのshellのソースとかは?
0070デフォルトの名無しさんNGNG
>>69
シェルのソースは地獄だよ。
0071デフォルトの名無しさんNGNG
>>65
ISO/IEC 9899:1999 - Programming Language C
0072デフォルトの名無しさんNGNG
>>59
前スレ終了直前のやつ
0073デフォルトの名無しさんNGNG
char uho;
scanf("%c",&uho);
とで、2文字以上を入力したとき2文字目以降の文字達はどこに格納されるのですか?
また、それを調べる関数はありますか?
0074デフォルトの名無しさんNGNG
数学とプログラムの類似点、相違点
どない思います?
0075デフォルトの名無しさんNGNG
>>73
残りはバッファに残ってる。
007673NGNG
場所は調べられませんか?
0077デフォルトの名無しさんNGNG
>>76
なんで?
007873NGNG
つぎの
scanf("%c",&別の変数);
としたときに、前の入力が入り込んでしまうじゃないですか。
つまり、その残骸を初期化したいんです。
いい方法はありませんか?
0079デフォルトの名無しさんNGNG
>>78
もう一回scanfをしろ。scanf使いたいならな。
008073NGNG
そうですねぇ。しかし、それだと、3文字以上入力したときに、もっとscanf必要ではないですか。
というか、ほかの関数を使えということです?
0081デフォルトの名無しさんNGNG
>>78
while( getchar() != EOF );

本当はscanfを変える方がいいと思うがな。とりあえずはこれで。
0082デフォルトの名無しさんNGNG
>>65
C++なら予約語全て使ったと言うものなら
ただし非実用、ためにならないw
http://www.ksky.ne.jp/~seahorse/cpp/cppiroha.html
008373NGNG
Thxです!!
EOFではうまくいきませんでしたが、
while( getchar() != '\n');
にしたら自分が望んでいる処理ができました。
ありがとうございました!!
0084デフォルトの名無しさんNGNG
>>83
while((c = getchar()) != EOF){
  printf("%c\n", c);
  fflush(stdin);
}
008573NGNG
ありがとうございます。
しかし、入力したのを全部表示するのではなく、2文字目以降はなかったことにしたかったのです。
ですが、わざわざ考えてくださりありがとうございます!!
0086デフォルトの名無しさんNGNG
'\n'で止めると次にスタックを使う時に困ると思うんだが。
0087デフォルトの名無しさんNGNG
>>85
???
008834NGNG
>>46
不覚ながら知りませんでした。

>>42
ヘッダに当然書いています。

>>50
どういう問題があるのでしょうか?

>>53
C++の環境は残念ながらないのです。

グローバル変数を直接使わずにset、getを使っての操作だとどう
いう利点(逆に言えばグローバル変数を使うことの欠点)があるんでしょうか?
0089デフォルトの名無しさんNGNG
>>88
どんな環境使ってるの?
0090デフォルトの名無しさんNGNG
ある文字が漢字かどうかを判定するプログラムをつくりたいのですが、
例えば
char *a = "漢";
としてaの1バイト目をJIS漢字コードで比較しようとして
if((a[0] > 0x81 && a[0] < 0x9F) ||
(a[0] >= 0xe0 && a[0] <= 0xfc))
{
printf("漢字");
}
みたいな文をかいたのですが、うまくいきません。
どこがいけなくて、何が必要なのか教えていただけませんか?
009165NGNG
>66
やっぱりw
そうだったらなんか一つつくってみよっかなーっとか
いやね使い物になるものを作るスキルはないっすけどw

>67
ちょっくらのぞいてみまーす

>68
すてき

>69
>70が言うようにきびしそー
モチベーションが続かないような気がします

>71
ちょっとHitしたかんじ

>82
すてきーファンになりそー

紹介してもらったものを手始めにいろいろと覗いてみようと思います。
有益な情報どうもありがとうございました。
0092デフォルトの名無しさんNGNG
>>90
SJISをいまどきベタで判定するのもアレだが
charは符号つきなのでSJISのコードはマイナスになっちゃうよ。
0093デフォルトの名無しさんNGNG
>>88
>getter setterの利点。
内部のデータ構造を隠蔽できる。
外部からは読み込み専用(やろうと思えば書き込み専用も)にすることが出来る。
変数が書き換えられた時に何らかの操作が必要になることがある。
そんなときに便利。(書き換えた後にこの関数を呼び出せでは忘れることがある)
引数が有効範囲にあるかチェックできる。(配列のオーバーアクセスをしていないかとか)

>getter setterの欠点
処理速度が遅くなる。
グローバル変数の問題点の根本部分は結局解決しない。
009493NGNG
な〜んか自分のいっていることがわかりにくいので補足。

とあるグローバル変数gはプログラム中の何らかの状態を表す。
その状態を変更する関数fooは実行されるとgの値を変更する。
メインの処理を行う関数ではgの値を条件分岐に用いている。

こんな状況は本当に危険。なぜならgは書き換え可能だから。
何らかの弾みでgの値を変更するコードを加えてしまうと原因の特定が困難なバグが発生する。
たとえば「gはプログラムの状態を表す」というコメントを見た別のプログラマーがgの値を変更すれば
プログラムの状態が変化すると勘違いをして変更するコードを書くかもしれない。
こんなときこそgは隠蔽して、その状態を取得する関数barを作る。これにて一件落着。

私が挙げられる最も分かりやすい例がこれです。
0095デフォルトの名無しさんNGNG
while(scanf("%s", &str[i++][0]) != EOF)
;

2次元配列を用意し、そこにEOFになるまで入力させるプログラムを書こうと思ったのですが、
VisualC++6.0でコンパイルするとEOFを検知できません。
Ctrl-dを押してもwhileループから抜けられません。
ちなみにVisualStudio.NETでも同じ結果でした。
しかし、Linux上のGCCではうまくいくのです。
なにがいけないのでしょうか。
0096デフォルトの名無しさんNGNG
>>95
DOS/WindowsではCTRL-Cですよ。
009795NGNG
>>96
Ctrl-Cだと終了してしまうのです・・・
0098デフォルトの名無しさんNGNG
>>95
>なにがいけないのでしょうか。
scanf()を使うこと。
009995NGNG
>>98
そういえばscanfは挙動がよくわからない部分があると聞いたことが・・・
getsに変えてみましたが同じ結果でした。
もっと他の関数に変えてみます。
0100デフォルトの名無しさんNGNG
「gets」のキーワードで坊が出現する予感…
0101デフォルトの名無しさんNGNG
(σ・∀・)σgets!!
0102デフォルトの名無しさんNGNG
> scanf("%c",&別の変数);
> としたときに、前の入力が入り込んでしまうじゃないですか。
> つまり、その残骸を初期化したいんです。
> いい方法はありませんか?

だーかーらー
「scanfを使わない」が正解だって
0103デフォルトの名無しさんNGNG
> while( getchar() != '\n');

おまえあほか!
なんでカッコの前の空白いれてないのに、うちがわにはあけるんだよ!
0104デフォルトの名無しさんNGNG
>>90
そのあたりは第4章に、まさにそのものの例がでてる。読め!
0105デフォルトの名無しさんNGNG
プログラムと数学の類似点、相違点
くわしく教えてください
0106デフォルトの名無しさんNGNG
> while(scanf("%s", &str[i++][0]) != EOF)
> ;
> 2次元配列を用意し、そこにEOFになるまで入力させるプログラムを書こうと思ったのですが、

だーかーらー! scanf使うなって、何回いったらわかるんだよ ぼけ!
0107デフォルトの名無しさんNGNG
> > Ctrl-dを押してもwhileループから抜けられません。
> DOS/WindowsではCTRL-Cですよ。

ぼけ! Ctrl+Zだろうが。

(まちがってUnixでCtrl+Zしないように)
010873NGNG
>>86
いえ、これを判定しているときにすでにgetchar()で入力処理(?)しているようでうまく動きます。
>>102
今回はscanf使ってつくりました。他の方法も興味ありです。
>>103
完全にあほです・・・。なんで空白空けたんだろう・・・。普段空白は入れないでやっています。。。
0109デフォルトの名無しさんNGNG
>>103
safari厨(=マカー)は死ね
0110デフォルトの名無しさんNGNG
入力処理の基本はfgets。
その文字を場合によってはsscanfなどで数値に変換しる。
0111neko ◆MNerR0G.3U NGNG
#include <stdio.h>
main(){

int a,s;
long far *tc=(long far *)0x0040006c;
s=1;
printf("\x1b[2J");
do{

if(kbhit()!=0){
a=getch();
if(a=='a'){
printf("\x1b[%d;1Hneko",s);
s=s+1;
}
}
*tc=0;
while(*tc<=6){}

}while(a!='s');

}

aボタンをしばらく押すと離してもしばらくneko」と表示される。
aボタンを離したらneko」と表示させないためにはどうしたらいいだろう?
0112デフォルトの名無しさんNGNG
×その文字を
○その文字列を
0113デフォルトの名無しさんNGNG
> 今回はscanf使ってつくりました。

だーからー 使うなよ!
0114デフォルトの名無しさんNGNG
1に書いておくべきだな。「scanfの話題禁止」って。

とにかくscanfはややこしくて初心者には使いにくいくせに、
それおぼえてもなーんのとくにもならんという、どうしようもないものだ。
0115デフォルトの名無しさんNGNG
質問です。
sizeof(int)が4
sizeof(short)が2
sizeof(char)が1のとき、

typedef union {
int a;
short b;
char c;
} foo;
のsizeof(foo)は、いくつになりますか?

(1) 4
(2) 2
(3) 1
(4) 処理系依存

けっこう、これ知らないひと多いのよね。
0116デフォルトの名無しさんNGNG
4!
0117デフォルトの名無しさんNGNG
ふふ
0118デフォルトの名無しさんNGNG
>>115
一番大きな型のサイズになるでしょ。
0119デフォルトの名無しさんNGNG
4?
構造体の穴ってやつだっけ?
0120デフォルトの名無しさんNGNG
C言語は人気があるなぁ
0121デフォルトの名無しさんNGNG
>>95 Winows/DOSでは
EOF = ^Z (0x1A)
EOT = ^D (0x04)
0122デフォルトの名無しさんNGNG
EOF = ^Z (0x1A)

あのー、^ZがEOFなわけじゃないです。
0123デフォルトの名無しさんNGNG
>>115
>>115
少なくとも最大のサイズのメンバを保持できるサイズ。処理系依存。
0124デフォルトの名無しさんNGNG
>>123
だと思うでしょ? ふつうに考えたら。
0125デフォルトの名無しさんNGNG
mallocしたら必ずfreeしなければならないのでしょうか?
0126デフォルトの名無しさんNGNG
>>125
放っておけばそのうち自動的に解放される(GC)。
0127デフォルトの名無しさんNGNG
いいえ >> 125
0128デフォルトの名無しさんNGNG
>>125
ポインタを代入した変数にヌルポインタを入れる
そうすると、そのポインタの指す領域は開放される
0129デフォルトの名無しさんNGNG
>128
氏ねボケカス
0130デフォルトの名無しさんNGNG
>126
>128
それCでは無いだろ
0131デフォルトの名無しさんNGNG
if(x>=y) return x;
else return y; �@
-------------------------
return (x > y) ? x : y;       �A
-------------------------

2つの数値を入力して大きい方を返すmax関数なんですけど、
�@と�A結果は同じです

こっちのほうが(・∀・)イイ!! などはあるのでしょうか?

初心者なもんでしょうもない質問だったらスマソ(;・∀・)
0132デフォルトの名無しさんNGNG
>>131
自分で見やすいと思った方に汁
0133デフォルトの名無しさんNGNG
>>124
で、どうなの?
0134デフォルトの名無しさんNGNG
>>132
返事ありがとうございます

見やすいほうでいいのですかー
いろんな書き方があってむずかすぃですな・・・・

0135デフォルトの名無しさんNGNG
>>131
>�@と�A結果は同じです

うそつき!

ちなみに漏れなら�@のelseなしにするかな
0136デフォルトの名無しさんNGNG
>>135
では君に質問。
xとyが同じ値の時にはどちらを返すべきかね。
0137デフォルトの名無しさんNGNG
どっち返しても一緒じゃん。
0138デフォルトの名無しさんNGNG
フローが違うといいたいんだろ。
つっても三項演算子にフローも糞もないわけだが。

俺は�Aだな。�@は冗長すぎ。
0139デフォルトの名無しさんNGNG
っていうか、そんなのに関数つかうなよ。遅くなるだけだろ。
マクロにしろ
0140デフォルトの名無しさんNGNG
>>131
だから�@と�A結果は同じじゃないんだって気がつけよ。
0141デフォルトの名無しさんNGNG
http://www.miss-you.jp/pc/index.php?code=P39
0142デフォルトの名無しさんNGNG
>>140
どういう状況で異なる結果が出るのか教えて。
0143デフォルトの名無しさんNGNG
(X >= Y)
(X > Y)
0144デフォルトの名無しさんNGNG
>>143
どういう状況で異なる結果が出るのか教えて。
0145デフォルトの名無しさんNGNG
ワロタ
俺も131をチラッと見て、違うんじゃ?と一瞬オモタよ。
131が釣りでないのなら、もちょっと読む人のことをを考えてプログラムが書けるように頑張れ。
3ヵ月後の自分は他人と思え、ってよく言うじゃん。
131が釣りなら、2人ぐらいは釣れたみたいだよ。
0146デフォルトの名無しさんNGNG
あー、ここCスレか。
C++なら==は真だが〜、がありえたね。
0147デフォルトの名無しさんNGNG
プッ
その場ででっち上げた言い訳にしても苦しすぎ
0148(1/2)NGNG
質問です。
char文 *str 内に、「○/○」と言う文字が格納されています。
この格納されている/以降の文字を「日付」として使いたいので、
この文字を「1」〜「31」の文字と比較し、
一致したら(適当な)引数flgを1として、
処理を進める、と言うプログラムを作成したいと思っています。
とりあえず試しに、

char *str;
char *judgment;
char *bundan;

judgment = strdup(str);
bundan = strtok(judgment,"/");
bundan = strtok(NULL,"/");

int k,l;
char reference[128];
for (k = 0; k < 32; k++)
{
reference[k] = k;
}
for (l = 0; l < 32; l++)
{
printf ("reference[%d] = %d\n",l,reference[l]);
if(bundan == reference[l])
{
flg1 = 1;
break;
}
}
0149(2/2)NGNG
と言う様な感じにプログラムを作って見たのですが、
どうやら下から5行目で「bundan」と「referenxe[l]」が、
char型とint型のため、比較出来ない様です(´・ω・`)

このreference[]配列の中にchar文を、1から31までを順に入れる方法、
もしくはこの様にchar文を、続き数字で比較するのに適した関数が有りましたら、
御教授を御願い致します。
0150デフォルトの名無しさんNGNG
       _,,. -−- ,,_ 
   ,.-‐'''"       ヽ 
   ノ             ヽ
  /        ,,,_,_    ヽ 
  {  ,vリjh!リjh!(   ヽ,   }
  }  / ,; ニ=  =ニミ;、i  {
  { j  ,.ェュ ,  { rtェ 、 i ノ
 { Y      ミ       Yリ
 !|    y.-,_-)、    |ノ   
   '!   ノ _, u 、ヽ   !     
   !    ''ニ' '    !  <体制を崩壊させるには、著作権侵害を蔓延させるしかない
    ト、  _,,,,,,    イ     
    /|   −-- −'  |ヽ,     Winny製作者47氏(金子勇)
ー'''{  |      ノ   .| /''ー
0151148-149NGNG
スイマセン、事故解決しました。
if(bundan == *reference[l])
にすれば良かっただけだったのか……_| ̄|○
0152デフォルトの名無しさんNGNG
>>148-149
釣り?
0153148-149NGNG
>>152
いや、ホント解らなかったんですが、
↑に書き込みしてる内に、色々思いついて試してたら出来てしまって……、
スレ汚し本当にスマソ_| ̄|○
0154デフォルトの名無しさんNGNG
>>153
いや、明らかに出来てないだろ。
0155デフォルトの名無しさんNGNG
>>148-149
突っ込み所満載だな
0156デフォルトの名無しさんNGNG
そもそもCで文字列処理をやろうとした時点で戦略的自滅
0157デフォルトの名無しさんNGNG
やりたいことは、atoi(bundan) ではないの?
0158デフォルトの名無しさんNGNG
関数ポインタが分かりません。

void (*pp[])() = { func1, func2, func3 };
int i;
for (i = 0; i < 3; i++) {
  (*pp[i])();
}
の呼び出してる所、[ ]がある時点ですでに中身参照って意味じゃないんですか?
*pp[i]って、ポインタのポインタみたい。って思うんです。
0159デフォルトの名無しさんNGNG
>>158
もうちょっと質問の形にしてくれる?
何を答えたらいいか、わからんよ。
ちなみに呼び出し行は、
pp[i]();
と書いてもいいよ。
0160デフォルトの名無しさんNGNG
>>158
それは「関数ポインタ」の配列
0161デフォルトの名無しさんNGNG
>>159
そう!それも分からんかったです。
void (*pp)() = func1;のときに、
呼び出すときに、(*pp)();でもpp();でも良いのは何でだろう?と。

あと、>>158のは、うーん、なんというか、
例えばa[5]とかくと、*(a + 5)と同じだと思うんですけど、
だから(**(pp + i))に見えるんですよ、*pp[i]って。
宣言の時アスタ1個しかついてないのに???ってなるんです。
*は中身参照だと教わったんですが、多分まだそれがいまいち理解できてないんだと思います・・・
0162デフォルトの名無しさんNGNG
ポインタ配列の関数間の受け渡しはどういう風にやるんですか?
0163デフォルトの名無しさんNGNG
>>162
ポインタ配列へのポインタを使うのです
0164デフォルトの名無しさんNGNG
>>162
argv(mainの第二引数)と同じ
0165デフォルトの名無しさんNGNG
>>158
中身を参照しただけじゃ関数は呼び出せないから。
呼び出すには()が必要。
[]で配列から要素(関数ポインタ)を取り出し、()で呼び出す。
0166165NGNG
ああなんかすっごーく的はずれな書き込みをしたかも。

関数ポインタはちょっと特殊で、何度間接参照してもOK。
0167デフォルトの名無しさんNGNG
テンプレにあるコンパイラのダウンロードの仕方が分かりません・・・
0168デフォルトの名無しさんNGNG
>>167
どれが?
0169デフォルトの名無しさんNGNG
>>168
GCCです
0170デフォルトの名無しさんNGNG
http://www.cygwin.com/setup.exe
0171デフォルトの名無しさんNGNG
>>169
ftp://core.ring.gr.jp/pub/GNU/gcc/
0172167NGNG
うーん、Unable get set up ini from 〜 って表示されて上手くいきません

Cの勉強がしたいのでとりあえずコンパイルできる環境がほしいのですが
0173デフォルトの名無しさんNGNG
おまえはbccでいいよ
0174デフォルトの名無しさんNGNG
abcで
0175デフォルトの名無しさんNGNG
> Cの勉強がしたいのでとりあえずコンパイルできる環境がほしいのですが

iMac買えば最初から入ってるよ。

ccもviも、

apacheもemacも
rubyもperlもsendmailもxmllintも!
0176デフォルトの名無しさんNGNG
> スイマセン、事故解決しました。
> if(bundan == *reference[l])

空白あけろよ ぼけ
0177デフォルトの名無しさんNGNG
>>175
iMacってLinuxのパクりOSなんですね。
0178デフォルトの名無しさんNGNG
if
(
bundan
==
*
reference
[
l
]
)
0179デフォルトの名無しさんNGNG
>iMacってLinuxのパクりOSなんですね。
>iMacってLinuxのパクりOSなんですね。
>iMacってLinuxのパクりOSなんですね。
0180デフォルトの名無しさんNGNG
>177 も少し調べるなりした方が良いぞ(w
0181デフォルトの名無しさんNGNG
iMacとか言っている>>175には突っ込まないんだな。
0182デフォルトの名無しさんNGNG
>>176
ばーか
0183デフォルトの名無しさんNGNG
>iMac
に入ってるOSは違うの?
0184デフォルトの名無しさんNGNG
OSX以前からあるし。
0185デフォルトの名無しさんNGNG
>>178
それは空白ではないですね。
0186デフォルトの名無しさんNGNG
iMacはiMacだろ? 何か問題でも?

iMacでMS Office買って入れると、Virtual PCがはいるんだけど、

Aquaのウィンドウと、
Windows XPのウィンドウと
Xのウィンドウが
混在して、楽しいですよね。

ちなみに、そのままでccが使えないのはWindowsのウィンドウだけです。
0187デフォルトの名無しさんNGNG
iMac買えば「最初から入ってるよ」。
0188デフォルトの名無しさんNGNG
そそ > 187

なので、買ってすぐにCの勉強できていいよね。
0189デフォルトの名無しさんNGNG
>>188
君には負けたよ。
0190デフォルトの名無しさんNGNG
% man cc
GCC(1) GNU GCC(1)



NAME
gcc - GNU project C and C++ compiler

SYNOPSIS
gcc [-c|-S|-E] [-std=standard]
[-g] [-pg] [-Olevel]
[-Wwarn...] [-pedantic]
[-Idir...] [-Ldir...]
[-Dmacro[=defn]...] [-Umacro]
[-foption...] [-mmachine-option...]
[-o outfile] infile...

Only the most useful options are listed here; see below for the remain-
der. g++ accepts mostly the same options as gcc.
0191デフォルトの名無しさんNGNG
189はごまかしモードに入った!
0192デフォルトの名無しさんNGNG
>>186
いまどきWinアプリをCで作るやつなんていないからな。
0193デフォルトの名無しさんNGNG
いっぱいいるのに。

C、C++、Javaが
3:5:2ぐらいだね。

10万人ぐらいつれてきたら、3万人以上はいる。
0194デフォルトの名無しさんNGNG
学校でやらされた奴が大半
0195デフォルトの名無しさんNGNG
それに 192 はいいわけにはなっていないですね。
ccが入っていないWindows君は、当然C++もJavaも入ってないのです。rubyもperlも! awkさえない!
0196デフォルトの名無しさんNGNG
がっこうでCなんかやるんかー、学校はふつうJavaよね。
Cは社会に出てからっていう人が多い。
0197デフォルトの名無しさんNGNG
K先生にCを習いました!! (学校で)
0198デフォルトの名無しさんNGNG
>>195
ばーか
VBS, CMD, C#, JScript, C#, VB.NETとか入ってるだろ。
そんな古臭い糞ツールはいまどきはやらないんだよ。
0199デフォルトの名無しさんNGNG
>VBS, CMD, C#, JScript, C#, VB.NETとか入ってるだろ。
プ
0200デフォルトの名無しさんNGNG
>>185
改行も空白の一種だが。
0201デフォルトの名無しさんNGNG
>>198
なぜ、「C#」だけ二度も出てくる?
そんなに「C#」を強調したいのか?
0202デフォルトの名無しさんNGNG
>>200
きっと isspace() を使ったことないんだよ
0203デフォルトの名無しさんNGNG
>>195
Windows2000 AdvancedServerにはPerlが入っている。
0204デフォルトの名無しさんNGNG
> きっと isspace() を使ったことないんだよ

isspace()とisblank()、歴史が古いのはどっちでしょう?
また、どっちがより範囲が広いか知ってますか?
(10秒以内に答えられたら500円あげる。
0205デフォルトの名無しさんNGNG
キャストの質問なのですが、
手持ちの解説書には『右辺の変数を左辺の変数にデータ型変換して代入』と
書いてあるのですが、以下の場合の右辺と左辺はどれになるのかわかりません。
てか、(BBB *)って何をしてるのでしょう・・・

stpBBB = (BBB *) cpAAA;

(※stpBBB,cpAAAは構造体で、エリアポインタセーブとして宣言されています)
いくらぐぐってもこんなキャストのやり方でてきません_| ̄|○
0206デフォルトの名無しさんNGNG
> VBS, CMD, C#, JScript, C#, VB.NETとか入ってるだろ。

はいってませんよ > Windowsに
0207デフォルトの名無しさんNGNG
>>205
=の左か右か
0208デフォルトの名無しさんNGNG
> 以下の場合の右辺と左辺はどれになるのかわかりません。
> stpBBB = (BBB *)cpAAA;

右側が右辺
左側が左辺ね

って、もしかして箸を左手でもつほうですか?
0209デフォルトの名無しさんNGNG
>>208
おそらく(BBB *)cpAAAしか注目していない。
0210デフォルトの名無しさんNGNG
>>205
>てか、(BBB *)って何をしてるのでしょう・・・

「BBB *」型に型変換をしている
0211205NGNG
>>207
>>208
すみません。書き方が間違っていたようです。
(BBB *) が何をしてるのかわかりません。
0212デフォルトの名無しさんNGNG
>>210
その手持ちの解説書とやらに書いてあるじゃないか
0213デフォルトの名無しさんNGNG
>>205
藻前、プログラムに向いてないよ
0214デフォルトの名無しさんNGNG
>>206
いつのWindowsの話をなさっているのでしょうか…
0215デフォルトの名無しさんNGNG
>>213
向いていないのはわかっています。
ですが、向いていないからやらないというわけにはいかないのです。
0216デフォルトの名無しさんNGNG
煽りには反応してマジレスはスルーか。
0217デフォルトの名無しさんNGNG
>>216
スルーしたつもりはないのですが失礼しました。

>>209
>>210
「BBB *」型に型変換をしている

*の指す意味がよくわかりません。
0218デフォルトの名無しさんNGNG
>>217
BBB *型は、BBB型のポインタ型
0219デフォルトの名無しさんNGNG
>>218
BBB型のポインタ型ですか・・・
ぐぐってみたら色々出てきましたので見てみます。
ご親切にありがとうございました。
0220元プログラマNGNG
>>205
(BBB *)はキャスト(cast)を行っている。
 機械語でいえば、どちらもアドレスを格納しているのだから
 同じ語長(バイト数)となる。(near , farは考慮せずに言えばだが・・・)
 つまり、アセンブラなら例えば、move a , b といった感じで
 書けるわけだ。
 だが、C言語には型があり、文法でエラーとなる。
 そこが高級言語の窮屈なところでもあり、いいところでもあるわけだが。
 でも型が違っても、語長は同じだし、機械語レベルで言えばアドレスと
 いう値であるから、同じといえば同じなんだな。
 それをC言語で文法チェックで代入できないところを、同じものなら
 代入できるようにしてあげよう!なんて親切な機能がキャストだ。
 わかったかな?

 でも、ついでにいえば、キャストというのはアドレス
 でなくても、無理矢理変換できてしまうから、変なことしていると
 落ちてしまうのだ。
 だが、そういう落ちてしまうようなシステムを作るのはC言語プログラマ
 としては3流だから、無視することとして(おれの作った組み込みは
 ハードが壊れないかぎり絶対に暴走はしないと自信がある!)
 まあ、おれさまのようなちょー一流プログラマになれば
 キャストがあったらいろいろ便利につかえるのだ。
 と、DQNなおれだが、たまには自慢させてくれ。
 以上。
0221デフォルトの名無しさんNGNG
エリアポインタセーブってなに?
0222デフォルトの名無しさんNGNG
>>217
自分も同じで「エリアポインタセーブ」が何だか聞きたいんだけど。
0223デフォルトの名無しさんNGNG
Googleで一件くらいは引っかかると思ってやってみたが・・・
0224デフォルトの名無しさんNGNG
struct AreaPointerSaveだったりして。
0225デフォルトの名無しさんNGNG
>>220
>おれさまのようなちょー一流プログラマになれば
>DQNなおれだが

己のDQNさを自覚しているのも質悪いな。
キャストの説明も間違ってるし。
0226デフォルトの名無しさんNGNG
バカだなおまいら。2万円のPCに1000円程度の雑誌の付録CDROMのOSを入れる。
開発環境は初めからほとんど揃ってる。あとは欲しい言語をダウソして終わりだ。
0227131NGNG
>>140
すみません 少し考えたんですがわかりませんでした・・・
>>145
本当に釣りではないですよ(笑
おっしゃるとおり読む人のことを考えたらどっちがいいのかなぁ?と
思ってレスさしてもらいました
�Aがいいようなのでこれからそうしたいと思います

あと他にこんな書き方のほうがいいぞ!ってあれば教えてください
お願いします&返事ありがとうございました(>Д<)ゝ
0228デフォルトの名無しさんNGNG
> 〓がいいようなのでこれからそうしたいと思います

文字化けしてるぞ!
0229デフォルトの名無しさんNGNG
まる2
0230デフォルトの名無しさんNGNG
>>227 だれかが、その程度のものマクロにしろっていってなかった?
#define MAX(x,y) ((x)>(y)) ?(x) :(y)
0231デフォルトの名無しさんNGNG
MAX(x--,y++);
0232デフォルトの名無しさんNGNG
おい!助けてくれ!

△△△△1
△△△22
△△333
△4444
55555

って表示させるにはどうすりゃいいんだ!
ifを使えってさ!あと△はヌルだってさ!

途中まで考えた!
int i,j;
for(i=1;i>6;i++){
for(j=1;j>6;++)
printf("%d" ←ここらから分かってない。
if(j>i

助けてくれ!マジで!
0233デフォルトの名無しさんNGNG
>>232
とりあえず最初のforループの判定に失敗するがいいのか?
0234デフォルトの名無しさんNGNG
>>232
C/C++の宿題をやらせて、お兄ちゃん 22代目
http://pc5.2ch.net/test/read.cgi/tech/1083050221/l50
0235デフォルトの名無しさんNGNG
>>233
うわ!そんなところから違うのか!ぎゃおす
>>234
誘導ありがとうございます。そちらに逝かせておもらしします。ありがとうごまします
0236デフォルトの名無しさんNGNG
>>232
>あと△はヌルだってさ!
表示しろってか?
0237デフォルトの名無しさんNGNG
>>236
スペースだってさ!もう少しっていうかかなり勉強してくるぜ!誘導先に!
0238デフォルトの名無しさんNGNG
ネットワーク対応ソフトの作り方を教えて下さい
0239デフォルトの名無しさんNGNG
ソケット使え
0240デフォルトの名無しさんNGNG
ソケットって何ですか?
0241デフォルトの名無しさんNGNG
ネットワーク対応ソフトを作るためのライブラリ
0242デフォルトの名無しさんNGNG
>>241
ありがとうございましT。
0243デフォルトの名無しさんNGNG
>>238
標準Cのみでは不可能。
環境スレに行け。
0244デフォルトの名無しさんNGNG
>>243
VC++あります。
スレ違いになりそうなので移動しますね
0245デフォルトの名無しさんNGNG
mallocで割り当てたメモリに対し、二重配列とみなして[][]でアクセスしたいのですが、
どうすればいいのでしょうか?キャストか何かで出来ないでしょうか?

char a[100][1000]; ←このメモリをmalllocで確保したい。
a[20][30] = 'a';
0246デフォルトの名無しさんNGNG
>>245
ムリ

#define Dim(name,x,y)((name)[(y)*100+(x)])

char *a;
a = calloc(100,1000);
Dim(a,20,30) = 'a';

こうやって誤摩化すか、構造体使え
0247デフォルトの名無しさんNGNG
>>245
typedef (*array_type)[1000];
array_type a;

a = (array_type)malloc( sizeof (char [100][1000]) );
a[20][30] = 'a';
0248デフォルトの名無しさんNGNG
誰かルーティングのプログラム教えてくれ〜!!
0249デフォルトの名無しさんNGNG
>>248
激しくスレ違い
0250デフォルトの名無しさんNGNG
c言語を使いたいのですが無料のソフトありませんか?
c++でもcは使えますか?
0251デフォルトの名無しさんNGNG
>>250
>c言語を使いたいのですが無料のソフトありませんか?
>>2

>c++でもcは使えますか?
OK
0252デフォルトの名無しさんNGNG
>>251
そういや>>2だけみると無料だってことが分からないな
0253デフォルトの名無しさんNGNG
>>251
即レス感謝です。
0254デフォルトの名無しさんNGNG
struct{
unsigned aa : 1;
unsigned bb : 3;
unsigned cc : 1;
} test;


こんな感じのをみました。初めて見たのですがこれはどういう意味ですか??
0255デフォルトの名無しさんNGNG
testという名前の構造体を宣言してるんだな
うん
0256デフォルトの名無しさんNGNG
>>254
ビットフィールド
0257デフォルトの名無しさんNGNG
>>256

ありがとう!ビットフィールド unsignedとかで検索したら出てきました。

0258デフォルトの名無しさんNGNG
コンパイルってどうやるの?
0259デフォルトの名無しさんNGNG
Win上で動作する簡易CDプレーヤーみたいなものを作りたいんですが、
PSDKとか、DirectX SDKも無いと駄目なんでしょうか?
こんなのを作るならこれがいる、って情報を見つけれませんでしたので質問させてください。

コンパイラはBorland C++を使ってますが、VC++の最近出たフリーのやつもインストールしました。

Cに関する知識は
ttp://www.amazon.co.jp/exec/obidos/ASIN/4797306513/ref=pd_bxgy_text_2/249-2197940-1452313#product-details
↑の本を大体理解できてる程度なので、まだまだ初心者の域を脱せませんが、
足りない知識はコード書きながらでも勉強して補います。
0260デフォルトの名無しさんNGNG
>>259
スレ違い
0261259NGNG
すいません…。
ここで大丈夫な内容だと思ったんですが…。
他あたって見ます。
0262デフォルトの名無しさんNGNG
>>259
これくらいはマスターしろ
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/qid%3D1075418279/249-4232193-4290742
0263デフォルトの名無しさんNGNG
>>246
プププ

>>247
ゲラゲラ

main()
{
char (*const p)[1000] = (char (*)[1000])malloc(100 * sizeof[1000]);
p[20][30] = 'a';
free(p);
}
0264259NGNG
>>262
2冊目、ってのは考えてたんですが実際にアプリを作りながらでも良いかな?って思ってたんですよ。
甘いってことですね。
紹介してくださったのも含めて、本屋で立ち読みしてステップアップによさそうなのを探してみます。
0265デフォルトの名無しさんNGNG
>>263
>>247
0266デフォルトの名無しさんNGNG
>>263
おまえ、そーとー頭悪いんだな。
0267デフォルトの名無しさんNGNG
>>266
みたいだな
mallocの引数で脳味噌腐ったらしい
吊ってくる
0268デフォルトの名無しさんNGNG
Cで電卓ってどうやって作るんですか?インターフェイスの話ね。
windowsの電卓プログラムみたいに、絵を出すにはどうすればいいか
さっぱりわからん。演算処理は自分でなんとかできそうなんで。
0269デフォルトの名無しさんNGNG
ごめん、>>1読んでなかった。逝ってくる。まじでごめん
0270デフォルトの名無しさんNGNG
>>246
> ムリ

こいつかなり低能だな。
ろくにC知らないくせに、えらそうに答えるな ぼけ
0271デフォルトの名無しさんNGNG
お前もな。
0272デフォルトの名無しさんNGNG
なんで?
さすがに私はあれぐらいわかったが。
0273デフォルトの名無しさんNGNG
char *b;
FILE *fp;

fp = fopen("test.txt","a+");
fgets(b,256,fp);
エラーで落ちてしまうのはなぜでしょうか?
char配列じゃないとダメ?
0274デフォルトの名無しさんNGNG
>>273
ああん? 俺の環境じゃ落ちねえなあw
0275デフォルトの名無しさんNGNG
ぼけ
fp = fopen("test.txt","a+");
とかぜったいにかくな!
必ずif文の中に書け
0276デフォルトの名無しさんNGNG
エラーになるのは別の理由だけど、そっちは教えない。
fopenの返す値をちゃんとチェックするようになったら、
エラーの原因(fgets)のほうもおしえてあげる
0277デフォルトの名無しさんNGNG
>>275
// ぼけ
fp = fopen("test.txt","a+");
// とかぜったいにかくな!
/* 必ず */ if //文の中に書け
(fp)goto hell;
0278デフォルトの名無しさんNGNG
>>273
「*b」はどこを指すんだ?って話だ。
0279デフォルトの名無しさんNGNG
>>275
fp = fopen("test.txt","a+");
if ( fp == NULL ) {
;
}
とかじゃだめなの?
0280デフォルトの名無しさんNGNG
if( (fp = fopen("test.txt","a+")) != NULL )
fgets(b,256,fp);
て感じ?
0281デフォルトの名無しさんNGNG
>>280
bを配列にね!
0282デフォルトの名無しさんNGNG
FILE *fp = fopen("test.txt", "a+");
if (fp == NULL) {
  /* ... */
}
だろ
0283デフォルトの名無しさんNGNG
この場合ポインタではどうやっても無理?
0284デフォルトの名無しさんNGNG
char *b;
b=(char *)malloc(256);
か
char b[256];
でメモリ確保しようよ。。
0285デフォルトの名無しさんNGNG
if((&fopen)(&0["test.txt"],("r",&"a++"))=='^'^'^')(T_T)(T_T);
0286273NGNG
皆さんTHX ノシ
0287デフォルトの名無しさんNGNG
関数へのポインタは
hoge()と&hoge()とでどちらにするのが良いでしょうか?
どちらでも動くんですが、どちらかが正しいというのがあったら聞きたいです。
宗教的な話になってしまいますか?
0288デフォルトの名無しさんNGNG
#define が全然わからん。どうすれあびい?
0289デフォルトの名無しさんNGNG
>>287
Cで使う分には問題にならないと思う。でもC++でメンバ関数を呼ぶときは&を
付けないとエラーになります。とりあえず&を付けとけば安全?
あんまり自信ないです。
0290デフォルトの名無しさんNGNG
> とかじゃだめなの

だめ。ださすぎ
0291デフォルトの名無しさんNGNG
> if( (fp = fopen("test.txt","a+")) != NULL )

空白あけろ! ぼけ
空白あけるな! ぼけ
空白あけるな! ぼけ
0292デフォルトの名無しさんNGNG
ボケボケ言うな! ボケ!
0293デフォルトの名無しさんNGNG
>>291
空白あけろがひとつ足りない! ぼけ
0294デフォルトの名無しさんNGNG
おまえらここに書き込む前に
猫でもわかるC言語
100回目通して来いボケが
0295デフォルトの名無しさんNGNG
最強の漏れはボケ
0296295NGNG
くそ。あんな間違いしたら恥ずかしいなーと思って書いてたら
本当に間違えた(;´Д`)くそうくそう

最強のボケは漏れ
0297デフォルトの名無しさんNGNG
C age!
0298デフォルトの名無しさんNGNG
http://www.kumei.ne.jp/c_lang/intro/no_44.htm

fseek(fp,length+5L,0);
この5Lってどっから出てきたの?
0299デフォルトの名無しさんNGNG
猫はSEEK_SETも知らないのか。
0300デフォルトの名無しさんNGNG
知らないわけじゃないか

> これらをSEEK_SET, SEEK_CUR, SEEK_ENDという定数で 表すこともあります。
「も」ってなんだよ。普通そうするし、そうすべきだろ。Perlじゃあるまいし。
0301デフォルトの名無しさんNGNG
SEEK_SETってファイルの先頭…で合ってるのかな?
それがどう関係してるやら…
0302デフォルトの名無しさんNGNG
>>301
>>298か?
別にお前に言っているわけじゃないんだが。
0303298=301NGNG
あ、そうなんだ…(´・ω・`)ゴメンナサイ
0304デフォルトの名無しさんNGNG
で、>>298の質問だが、
> 最初の5バイトの所に レコード番号を記録するようにする
と書かれているから、そのレコード番号の次にファイルポインタを進めたいんじゃないの?
0305デフォルトの名無しさんNGNG
>>304
あ、なるほど…

orz
0306436NGNG
5LのLはレコードのLですね。
0307デフォルトの名無しさんNGNG
>>306
レコードならRだろ?
0308デフォルトの名無しさんNGNG
>>306
ば〜か。
ジョーク書くならもっと面白いものかけ。
レコードならRだろうが。
0309デフォルトの名無しさんNGNG
long型のLでいいんだよね?
びっくりした…
0310デフォルトの名無しさんNGNG
こんにちはっ!

おすすめ「C言語辞典(辞書)」なんかあったら教えてくらはい

俺はこんなの使ってるぜーみたいなのあればよろしくお願いしますー
0311デフォルトの名無しさんNGNG
>>310
ISO/IEC 9899:1999 - Programming Language C
0312デフォルトの名無しさんNGNG
お邪魔します。2つ質問があります。

変数に値を代入するとき、二進数の形で代入することは出来ないんでしょうか?
あと、
flgの値が0だったら-1、1だったら1を代入するというのを、
ifやswitchなどの制御文、除算、乗算などを使わずにするのはどうすれば?
0313デフォルトの名無しさんNGNG
>312
ひとつめは、できないとおもう。
ふたつめは、配列つかえばいいとおもう。
0314312NGNG
>>313
>ひとつめは、できないとおもう。
そうですか・・・ありがとうございます。

>ふたつめは、配列つかえばいいとおもう。
ビット演算とかでは無理でしょうか?
色々考えたんですが、思いつかなくて・・・やっぱり配列使うしかないですかね。
0315デフォルトの名無しさんNGNG
int ans[]={-1,1};
return ans[flg];
0316デフォルトの名無しさんNGNG
>>287
Cだと伝統的には
宣言 int (*printf_ptr)(const char*, ...);
代入 printf_ptr = printf;
呼出 (*printf_ptr)("hello, world\n");
でしょ。

Cの関数については「アドレスを取る」ことと「呼ぶ」ことしか出来ないから
*だの&だのをつけたり付けなかったり*を何個つけても同じだったり
するけれど、&つけたりすると、ANSI以前のコンパイラだと動かないことが
あるかも知れない。まああまり自信は無いが。
0317312NGNG
>>315
今気が付いたんですが、ビット演算よりそちらの方が速いですね。
配列使います、ありがとうございます。
お騒がせしました。
0318デフォルトの名無しさんNGNG
return flg*2-1;
0319デフォルトの名無しさんNGNG
>>312
何でそんなことしたいのかよく判らんが
answer = (input << 1) - 1;
でどうだ?
0320デフォルトの名無しさんNGNG
メンテ性も可読性も、ほとんど速度も配列の方が上。
0321デフォルトの名無しさんNGNG
非常に単純な式でなければわざわざビット演算を使う必要はないと思うな。
0322デフォルトの名無しさんNGNG
lea eax,[eax*2-1]なんつって
0323デフォルトの名無しさんNGNG
>>312
>変数に値を代入するとき、二進数の形で代入することは出来ないんでしょうか?

char *p;
long val;
val = strtol( "0101", &p, 2 );

>flgの値が0だったら-1、1だったら1を代入するというのを、
>ifやswitchなどの制御文、除算、乗算などを使わずにするのはどうすれば?

三項演算子と言う手もある
→val = (flg==0) ? -1 : 1;
0324312NGNG
>>319
おお!なるほど!思いつきませんでした。
今回は速度の面から配列を使うことにしましたが、
そういう演算の仕方は覚えておきます!ありがとうございます!

>>320
最初はメモリ節約のために、なるべく変数を減らそうとしていたんですが、
可読性は大事ですね。
0325デフォルトの名無しさんNGNG
assert(flg == 0 || flg == 1);
n = (flg==0)?-1:1;
で十分
0326デフォルトの名無しさんNGNG
>>323
long val;
val = strtol( "0101", NULL, 2 );
で十分
0327デフォルトの名無しさんNGNG
配列はメモリアクセスが発生するからキャッシュが汚れる
0328312NGNG
>>323.>>326
あー、なるほど。
strtolというのは使ったことがなかったので知りませんでした。
ここは本当に勉強になりますね。
他の皆さんもありがとうございます。・゚・(ノД`)・゚・。
0329デフォルトの名無しさんNGNG
コンパイラによっては三項演算子とか普通にif 使えば
>319のような計算に最適化してくれるけどな。
マシンコード的には他にもやりようが有るし。

それから本当に配列の方が速いかどうかは環境に拠るぞ?
0330デフォルトの名無しさんNGNG
この程度の問題で速度を気にしなきゃいかん方がどうかしてる。
Windows環境でマウスをちょろっと動かしただけで一体どれぐらいの
コードが動いてるかまじめに考えるとぞっとするぞ。
0331デフォルトの名無しさんNGNG
漏れとしては>>318に感動したんだがどうよ
0332デフォルトの名無しさんNGNG
初心者が即興で作ってみますた。

#include<stdio.h>

void roop(int i);

main()
{
int i=0;
roop(i);
}

void roop(int i)
{
while(1){
printf("%d\n",i);
i++;
roop(i);
}
0333デフォルトの名無しさんNGNG
>>332
何がやりたいんだ?
スタックオーバーフローするまで無限にネストするだけやんか
0334312NGNG
えと、実はゲーム製作なんで、とにかく速度が速くないといけないんですよね。
ゲーム製作技術で訊くべきなのかもしれないのですが、
あちらは人が少ないですし、C言語ベースなので、こちらで訊かせていただきました。
メモリ節約、可読性、速度、全てを考慮しながらのプログラミングは難しいですね。
スレ違い話すみません。
0335デフォルトの名無しさんNGNG
>>334
高速化省メモリ化の定石はともかく可読性の高くちゃんと動くものを作ってから
遅い部分、メモリを食ってる部分を調査・改善していくこと。
今回の配列みたいに局所的な字面にこだわっても効果は上がらないよ。
高速化されるかどうかは実際に遅い部分を書き換えて実験して初めてわかることだ。
0336312NGNG
>>335
仰るとおりです。
初めから完成型に持っていこうとしすぎていました。
少しずつ少しずつ良い形にしていけばいいのですよね。
それでは本当にスレ違いなのでこの辺で。ありがとうございました。
0337310NGNG
>>311
アリガト!(´▽`)

本屋で立ち読みしてみるYO-
0338デフォルトの名無しさんNGNG
>>332
どーでもいいがループのスペルはloopだぞ。
だからと言ってroopという関数を作ってはならない、ということには
ならないが。
0339デフォルトの名無しさんNGNG
mein()もわすれづに。
0340デフォルトの名無しさんNGNG
>>320
「ほとんど」って時点でただの戯れ言に成り下がったな
ポインタが苦手な言語障害者による
定量的な評価ができないがゆえの勝手な決めつけにすぎない
0341デフォルトの名無しさんNGNG
ずいぶん噛み付いてくるけど、意味が不明瞭。
0342デフォルトの名無しさんNGNG
>>340
保守性と可読性は確実に配列のほうが上だろ。
速度は配列のほうが最適化の余地が多いし、
多くのCPUには配列にアクセスするためのアドレッシングモードが存在する。

まあ、「だいたい」早くなる罠。
0343デフォルトの名無しさんNGNG
大抵早くなる
多々早くなる
しばしば早くなる
0344デフォルトの名無しさんNGNG
>>342
可読性、保守性、拡張性(笑)とかは配列のほうが上ってのは前提で、
速度に関してだけ。

単純な計算式である flg*2-1なら、その配列用のアドレッシング機構で
1命令で算出できてしまう(例: >>322)という最適化もあるよね。
この場合配列アクセスするよりまちがいなく速いかと。
もちろん処理系次第だが。
0345デフォルトの名無しさんNGNG
聞けばキクホド配列の方が一般的に早いとおもうが。
0346デフォルトの名無しさんNGNG
片っ端から比較しないことには
一般的に速いといえるかどうかは分からん。
0347デフォルトの名無しさんNGNG
俺さん、c言語ってなんですか?
0348デフォルトの名無しさんNGNG
言語、ってまわりくどいから、C語。
0349デフォルトの名無しさんNGNG
>>342
だから、その「確実に」を証明しろよ
条件を特定しないあんた流に則って

ptrdiff_t Malloc(size_t);
char *p = 0;
ptrdiff_t i = Malloc(10 * sizeof(char)) / sizeof(char);
Strcpy(p, 0, "konnnamon", 0);
i = Realloc(p, i, 15 * sizeof(char)) / sizeof(char);
Strcat(p, strlen(p), "tukatterareruka", 0);
Puts(p, 0 * sizeof(char));
Free(p, 0 * sizeof(char));
0350デフォルトの名無しさんNGNG
証明なんてだれもしないよ、そんなことで。
0351デフォルトの名無しさんNGNG
>>350
言い切る根拠がないことを認めたわけだな
よっしゃよっしゃ
0352デフォルトの名無しさんNGNG
ゲームで速度的にネックになるのはどう考えても画面描画辺りだろ。
0353デフォルトの名無しさんNGNG
フリーのBorland C++ Compiler 5.5.1使ってるんですけど
color.cってファイル名はコンパイルできないんでしょうか?
できれば確認してもらえませんか、お願いします。
0354デフォルトの名無しさんNGNG
>353
もう寝ろよ。
0355デフォルトの名無しさんNGNG
>>353
まってくれ・・・本当なんだ、お願い確かめてみて...orz
それとも下のプログラム間違ってます?
---ここから
#include <stdio.h>

int main(void)
{
printf ("hello!");

return 0;
}
---ここまで
0356デフォルトの名無しさんNGNG
エラーの内容書け
0357デフォルトの名無しさんNGNG
C:\>bcc32 color.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
color.c:
Turbo Incremental Link 5.00 Copyright (c) 1993, 2000 Borland

C:\>
---
コレだけです。
0358デフォルトの名無しさんNGNG
便りがないのはよい便り。
0359デフォルトの名無しさんNGNG
>>357
それ以上何を期待してるんだ?
0360デフォルトの名無しさんNGNG
>>359
いやきっと>>357は
「コンパイルは正常に終了したよ。実行してね!」とでも出力して
欲しいのでは。
0361357NGNG
それが、実行しても何も表示されないんです。
C:\>color

C:\>
0362357NGNG
ああ・・・色々調べてたら自己解決しました。
コマンドプロンプトのコマンドにcolorってのがあるからでした・・・。
C:\>color.exe
hello!
とやればちゃんとできました。
変な事書いて不快にさせてしまったようで申し訳ないです。
0363デフォルトの名無しさんNGNG
ふーん、colorなんてコマンドあったんだ。
途中まで笑って読んでたけど、最後のオチで笑えなくなった。
だって俺がそれにハマらないとは限らないから。
コマンドプロンプトで動かす簡単なユーティリティやテストプログラムをよく作るから。
0364デフォルトの名無しさんNGNG
Windowsだとcon.cとかaux.cとかいう名前のファイルをつけようとすると
ハマるよね。
0365デフォルトの名無しさんNGNG
Wiwndowsはよく知らんのだがサーチパスという概念はないのか?
0366デフォルトの名無しさんNGNG
>>365
cmd.exeとかのシェル内蔵のコマンドが最優先というだけ。
0367デフォルトの名無しさんNGNG
typedef int array[1];
array const* f( array* p ){ return p; }

このソースをコンパイルすると、

: In function `f':
:2: warning: return from incompatible pointer type

という警告がでます。
T* から T const* への変換なのですが、なぜ incompatible と言われるのでしょうか?
コンパイラは gcc (GCC) 3.3.1 (cygming special) です。
ちなみに、同じソースをC++としてコンパイルすると警告は出ません。
0368デフォルトの名無しさんNGNG
>>367
戻り値の型が違うから
そのままじゃん
0369367NGNG
>>368
int const* g( int* p ){ return p; }
これだと警告は出ないのです。
0370デフォルトの名無しさんNGNG
>>367
パッと見の印象だけど、それは確かに解せないね。
const char *に char *を渡してもwarningはでない、んでしょ?
んなのでwarning出るようじゃlibcの多くの関数でwarning出まくっちゃうからね。

それと同じ変換だと思うんだけどね。
0371デフォルトの名無しさんNGNG
>>367,370
CFAQの11.10見てみ。
367は問題あるけど369は問題ない理由が分かるよ。
0372367NGNG
>>371
???
array const* は int const(*)[1] であり、 int const** ではないので、
その話とは違うのではないですか。

ためしに、
array const* h( array* p ){ return (int const**)p; }
こうしてみましたが、同じ警告がでました。
0373デフォルトの名無しさんNGNG
どうでもいいが配列をtypedefするのはやめてほしい
0374デフォルトの名無しさんNGNG
>>367
Tへのポインタを、const Tへのポインタに代入することはできる。
ただし、このTはint型やdouble型はいいけれど、intへのポインタ型や
intの配列型とするといけない。

367の関数は、constなintの配列へのポインタに
intの配列へのポインタを代入できない。
369の関数は、constなintへのポインタに、intへのポインタを代入できる。
0375367NGNG
>>374
> ただし、このTはint型やdouble型はいいけれど、intへのポインタ型やintの配列型とするといけない。

「配列型とするといけない」という根拠はないのでしょうか?
int** から int const** への変換ができないという話なら、納得できます。

それと、ポインタと配列で結果は違います。
typedef int* pointer;
pointer const* i( pointer* p ){ return p; }
これだと警告は出ません。
0376デフォルトの名無しさんNGNG
75 名前:名無しさん@4周年 投稿日:04/05/15 02:51 ID:NKgmX+1w
ひどい官製談合の日米半導体協定という国際協定を名目にした
半導体の製造と販売に関する悪事(主としてメモリのビット単価の維持と、日本がアメリカ製
CPUを買わざるを得ない数値目標の押しつけ)を取り決めた際の
担当者が、あの十和田雅子だった。
これがために、消費者は馬鹿高いメモリを買わされ続け、メモリ容量
の増大のトレンドカーブが人為的に凍結され、いつまでも16ビットアドレス
の枠をPCが超えられず、OS/2は製品として失敗し、日本の半導体メーカーは
談合で価格が保証されているので、経営のリスク感覚が完全に麻痺し、
技術開発への投資、特に技術系人間への投資が手薄になった。そうして
油断しているうちに、協定の範囲外だった韓国と台湾の台頭を許し、
マイクロプロセッサに関して言えば、TRON以外にも国産のCPUは
日本製メモリ製造の生贄として抑圧され、さまざまに阻害された。
インテル製CPUの輸入が減ると、アメリカ政府の強制した数値目標
が達成出来なくなるので、通産は米国政府といっしょになって、
メーカーのCPU開発を妨害し続けた。うまい思いをしたのは、
専ら通産省の役人である。半導体メーカーに大量に天下りをした。
そうして規制に過保護されて甘やかされた日本のメモリを中心とする
半導体メーカーは、内部から腐っていき、気がついてみたら、歩留まり
向上のノウハウはみな日本からインテルなどの米国メーカーに流失
してたし、経営陣はみんなで横並びで行動する習性が協定が廃止された
後も止まらず、いたずらにピッグサイクルを繰り返すばかりだった。


「十和田雅子」は「小和田雅子」の間違いと思われ。
0377デフォルトの名無しさんNGNG
とりあえず、Cドライブに直接ソースを置くのやめれ
適当なフォルダ作れ
0378デフォルトの名無しさんNGNG
>>367
自分で考えるのが好きなようだから、ヒントだけ。

「配列型への型修飾子は、配列型ではなく要素型への型修飾子として扱われる」

2、3日ゆっくり考えてみてください。
0379デフォルトの名無しさんNGNG
少し前にあったのですが、答えらしき物がなかったので質問させてください。
int array[tate][yoko] を確保するのに、

int **array; として、
tate と yoko を入力してもらって、

array = (int **) malloc(sizeof(int *) * tate);
for(i = 0; i < tate; i++)
array[i] = (int *) malloc(sizeof(int) * yoko);

と言うのは、正しいのでしょうか?
よく使ってしまうんですが。
0380デフォルトの名無しさんNGNG
>>349
←機械寄り    人間寄り→
実アドレス ポインタ 配列

これでも「証明しろ」なんて言うのなら主観評価実験が必要なんだが、
そんなことわざわざやりたくないし、やる必要も無いし、やる金も無い。
0381デフォルトの名無しさんNGNG
>>379
正しいよ。
0382デフォルトの名無しさんNGNG
>>379
やろうとしていることによる。
つまりポインタ配列が本当に必要で介在させているのか、
二次元配列が使えない未熟が理由の無能な醜態か、
口先では何とでも言えるが本音がどっちかによる。

因みに俺は[][]と**を混同したがる者を後者ではないかと強く疑う。

>>380
別にさー
機械寄りが嫌いな人にPGやれだなんて誰も頼まないだろ
心配するな、人それぞれ向き不向きがあるのさ
人間寄りが好きなら管理職でも目指したらどうだ?

あ、そうそう主観評価実験って官能検査のことか?w
0383デフォルトの名無しさんNGNG
>>382
ポインタ配列が本当に必要な場合とは、、、
文字列の配列を作るときとか?
0384デフォルトの名無しさんNGNG
配列を動的に作りたいときには、どうしても配列とポインタを読み替えていかないとならないだろ。

int tate = 10;
int yoko = 20;
int a[][] = malloc(sizeof(int) * tate * yoko);

これ、出来ないし。
0385デフォルトの名無しさんNGNG
>>383, >>384
yokoが定数にできない代表的な例だな
0386デフォルトの名無しさんNGNG
>>379
そのtate, yokoは変数であるという条件ってこと?
少なくともyokoが定数でいいんなら >>247 式にできるが。
(tateが変数だとmallocの中の計算が変わるが)

C99だと変数でも
int a[tate][yoko];ができるのかな?
0387デフォルトの名無しさんNGNG
> roop(i);

で、roopって何語だよ! ぼけ
0388デフォルトの名無しさんNGNG
> mein()もわすれづに。

何語だよ!
0389デフォルトの名無しさんNGNG
> 保守性と可読性は確実に配列のほうが上だろ。

いいえ。ポインターのほうが読みやすいし保守しやすい
0390デフォルトの名無しさんNGNG
>>382
おまえの所属するプロジェクトに携わっているやつらはかわいそうだ。
時々いるよな。「こっちのほうが速い」とか言ってコードを保守不能にする奴が。
結局速くなったのは1nsとかで、セキュリティーホール満載に書いておいて、
「俺って出来るんだぜ、かっこいいだろ」って思ってるんだろ。
時代は抽象度をどんどん上げていく方向に進んでいると言うのに、悲しきCOBOLERだこと。

>>382
途中にconstとかvolatileとかがついている場合は必要だよね
あとは行間の入れ替えが多く発生する場合とか
0391デフォルトの名無しさんNGNG
> 変数でもint a[tate][yoko];ができるのかな?

できるにきまってるだろ! おまえCのセンスなさすぎ
0392デフォルトの名無しさんNGNG
センスじゃねーだろ
0393デフォルトの名無しさんNGNG
>>391
変数と言っているじゃないか。
C99ならできるけど。
0394Error@MSNNGNG
C#ってCとどう違うんですか?
それとも別のものでしょうか?
0395デフォルトの名無しさんNGNG
>>394
別のものと思った方がいい。
0396デフォルトの名無しさんNGNG
>>394
CのサブセットがC#
Cと違って構造体が使えない。
0397デフォルトの名無しさんNGNG
>>394
別の物
0398デフォルトの名無しさんNGNG
ネタが多いね、同じです。
0399デフォルトの名無しさんNGNG
> CのサブセットがC#
> Cと違って構造体が使えない。

うそですね。
C#はむしろJavaの亜流
0400デフォルトの名無しさんNGNG
> >>391
> 変数と言っているじゃないか。

だから変数でもできるだろ? おまえセンスねーな
0401デフォルトの名無しさんNGNG
C#はむしろDelphiをJava風に作り直した言語
0402デフォルトの名無しさんNGNG
Delphiというよりは
VB.NETにむしろ似てるな
0403Error@MSNNGNG
ところで、CをCGIとして使う場合、Perlのようにしなければならないんでしょうか?

たとえば
ローカルでは
print "hello";

サーバーでは
print header;
print "hello";

のように。
0404デフォルトの名無しさんNGNG
>>403
CGIの仕様の話で、言語は関係ない。
0405Error@MSNNGNG
CのをCGIとして使いたいんですが、Helloという文字列を表示するのには
ただ
printf("hello\n");
のようにすればいいのでしょうか?
0406Error@MSNNGNG
あ、かぶりました。すみません。
0407デフォルトの名無しさんNGNG
>>400
だからC99ならできると言っているだろうが。
たまたまお前の使っているコンパイラがC99に対応しているか、GCCみたいに独自拡張されているだけなんだろ。
0408デフォルトの名無しさんNGNG
言語の文法は関係ない。
標準出力へ、プロトコルにかなった文字列を吐き出せばいいだけ。
0409デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Content-Type: text/plain\n\n");
printf("QUERY_STRING = %s\n",getenv("QUERY_STRING"));
return 0;
}
0410デフォルトの名無しさんNGNG
>>390
保守できない誰かさん1人のために使用できる技術を限定されるチーム全員-1がかわいそうだ
ポインタ使ったからセキュリティホールだって? 興味深い新説だな(プゲラ
何度も言ってるだろ、抽象度が高いパートを担当したい人の職業選択の自由は尊重すると
誰かさんみたいに特定の職業を馬鹿にするような態度はとらないよ

途中にconstかあ
セルは書き換えオケーで行単位の書き換えだけ禁止ってことか
さっき抽象度とか言っていたようだが頭元気か?


0411デフォルトの名無しさんNGNG
> どうでもいいが配列をtypedefするのはやめてほしい

ポインターもtypedefするのはやめてほしい
0412デフォルトの名無しさんNGNG
> だからC99ならできると言っているだろうが。

いーや。Cならできる
0413デフォルトの名無しさんNGNG
> printf("QUERY_STRING = %s\n",getenv("QUERY_STRING"));

空白あけろよ ぼけ。
0414デフォルトの名無しさんNGNG
>>411
ポインタのtypedefは見つけると本当にがっかりするが
配列のtypedefはサイズを#defineするより合理的な場合があるぜ?
たとえばjmp_bufとかそーなってんべ
0415デフォルトの名無しさんNGNG
日本人ってのはどうして主張の当否と、それをいってる奴の人格を区別できないのだろう。

相手の人格にケチをつけることと、そいつの主張の間違いを指摘するのは全然別のこと。

人格を否定することを反論することだと勘違いしていたり、
いちいち相手の人格にケチをつけないと、そいつの主張の瑕疵を
指摘できないってのは情けないと思わんのか?いい年した大人がさあ。
0416デフォルトの名無しさんNGNG
>415 坊やだからさ
0417デフォルトの名無しさんNGNG
>>415
打たれ弱いんだね
0418デフォルトの名無しさんNGNG
>>412
確認だが、
int tate = 10;
int yoko = 20;
のようにtate, yokoが変数の状態で
int a[tate][yoko];
とできるって話なんだけどな。
規格上、C99で初めてできるようになったんだが。
0419デフォルトの名無しさんNGNG
いや、415がむしろ区別できてないんだろうよ。

ただぼけはぼけだと言っているだけなのだから。
0420デフォルトの名無しさんNGNG
int a,b;
などの変数定義をプログラムの最初に書くのが一般的ですが、
プログラムの中ほどで定義するのは問題でしょうか?
よろしくお願いします。
0421デフォルトの名無しさんNGNG
別に問題はありません。

古いコンパイラーではエラーになるかもしれない。程度です。
0422デフォルトの名無しさんNGNG
あ、私のは関数定義の中で、の話ね。
ブロックの最初にまとめて書くひとが多いけど、そうしなくてもいいってこと。

関数定義の外だったら、まあ、古いコンパイラーでも、もともとどこに書いてもいいのだ
(使う前なら)
0423デフォルトの名無しさんNGNG
C99 だって
0424デフォルトの名無しさんNGNG
は? こいつまぬけ > 423
0425デフォルトの名無しさんNGNG
func()
{
int a, b;
a = b = 10;
printf("%d %d ", a, b);
int c, d;
c = d = 10;
printf("%d %d ", c, d);
}
なーんにも問題なし、常識です。
0426デフォルトの名無しさんNGNG
>>424
だからC99ならできると言っているだろうが。
たまたまお前の使っているコンパイラがC99に対応しているか、GCCみたいに独自拡張されているだけなんだろ。
0427デフォルトの名無しさんNGNG
>>426
は?
> だからC99ならできると言っているだろうが
こいつばか
0428デフォルトの名無しさんNGNG
おまえCのセンスないな。でなおしてこい! ぼけ > 425
0429デフォルトの名無しさんNGNG
なんか攪乱しておもしろがっている香具師がいるな
0430デフォルトの名無しさんNGNG
429がそうかな?
0431デフォルトの名無しさんNGNG
は? 構造体の代入?
そんなのはCでできないよ。

C89ならできるが? たまたまおまえの処理系がそれに対応してるだけだろ?

Cの話題をしてるんだよ!
0432デフォルトの名無しさんNGNG
は?
インクリメントの前置き?
そんなものはCでできるわけねーだろ?

そりゃC79ではできるかもしれんが、そんな特殊な話をしてんじゃねーよ!
たまたまおまえの処理系が拡張されてるだけだろ?
0433デフォルトの名無しさんNGNG
>標準C が何を指しているかだが
0434デフォルトの名無しさんNGNG
は? 代入演算子 -= ? そんなものはねーよ

C69ならできるかもしれないが、おれはふつうの体位でしかやらん!
0435デフォルトの名無しさんNGNG
> 標準C が何を指しているかだが

標準規格のCにきまってるだろ! ぼけ
0436デフォルトの名無しさんNGNG
センスがないってのがよくわからん。
0437デフォルトの名無しさんNGNG
おまえは英語のセンスがないってことだ ;-) > 436

センスはセンスだろ。わざわざ日本語に訳さないといけないのか?
0438デフォルトの名無しさんNGNG
C99にきっちり対応した処理系はEDGのものだけっていう現状が問題だな。
0439デフォルトの名無しさんNGNG
>>437
つまらない。
0440デフォルトの名無しさんNGNG
わたしの自作のcompilerも適合してるな。
0441390NGNG
>>410
ふぅ・・・。いつのまにか漏れはポインタを使えない人間になってるんだなぁ。
あなたの主張ではポインタはできる限り使わないって主張する人はポインタが使えない人なのね。
じゃあgotoは使うなって主張した人はgotoが使えないのでしょうか。(怖くて使えないとか?w)

>誰かさんみたいに特定の職業を馬鹿にするような態度はとらないよ
いつ誰が馬鹿にしたんだよ…。保守性が高いって言っただけだろ。
>セルは書き換えオケーで行単位の書き換えだけ禁止ってことか
そうだね。セルだけを処理対象とする関数の引数はそういう型を使うだろうね。

結局あなたは自分の弱いところを言っちゃってるんだよね。ちゃんと理解できてるじゃん。
最初にキミはポインタが使えない言語障害者がどうのこうのとか言ってたよね?そういうこと。
0442デフォルトの名無しさんNGNG
>>441
おまえCのセンスなさすぎ
0443デフォルトの名無しさんNGNG
> ふぅ・・・。いつのまにか漏れはポインタを使えない人間になってるんだなぁ。

いつのまにかじゃなくて、最初からそうなのでは? ;)

> じゃあgotoは使うなって主張した人はgotoが使えないのでしょうか

そうです。
0444390NGNG
>>442
そりゃあ漏れだってポインタをがりがり使って最適化したこともあるさ。
とある組み込み系のプログラムでね。
でもそれが保守性が高いなんていえないと思うがね。

不思議なんだけど、何でこういう主張をするとポインタが使えない人になるの?
0445デフォルトの名無しさんNGNG
>>443
あなたは無能ですね ;)
0446デフォルトの名無しさんNGNG
>>444
当然なるだろう。
そんなことで保守性はさがらないのに(むしろあがる)、そんな主張をするってことは
ポインターがちゃんとわかってない証拠。

if (a == 0)
b = 0;
じゃなくて、
if (a == 0)
{
b = 0;
}
にしろとか主張するやつは、if文使えないひとです。
0447デフォルトの名無しさんNGNG
>>446
> if (a == 0)
> {

改行するなぼけ
0448デフォルトの名無しさんNGNG
そう。改行しろと主張するんです。そのほうが「わかりやすい」と。
それってつまりそのひとはif文使えない人ってことでしょ?

それと同じぐらいあなたは「ポインター使えない人」なんです。
0449デフォルトの名無しさんNGNG
「ポインターを使えない人」だなんて言うもんだから
バカにされたとおもって粘着暴れするのでは?

めくら、や、つんぼ とおなじ。

ちゃんと「ポインターに不自由な人」といいなさい。
0450390NGNG
>>443
言っておくけど漏れは特定条件でのgoto使用容認派だぞ。
だから何で例に挙げた主張を漏れの主張と捉えるの…。

>>446
ついにコーディングスタイルにまで口出しですか…。
もういいです。はい。さようなら。
0451デフォルトの名無しさんNGNG
GW当たりから湧いてきたバカがいますが、放置よろ。
0452390NGNG
>>446
一応言っておくけど、おまえの定義だと漏れはif文使える人だな(笑
0453デフォルトの名無しさんNGNG
> ついにコーディングスタイルにまで口出しですか

ちっとも「ついに」ではないですね。
ようするに、gotoがなぜいけないか、どういう場合はOKかがわかってないやつほど
「goto使うな」というのと同じ。
ふつうは言わない(いわなくてもめったに使う用事でてこないので)。まっとうな人間なら、
たまにだれかが不適切なgotoを使っているのをみかけてとがめる場合でも、
「gotoはつかうべきではないから」という本末転倒の言い方はしない。

ポインターと配列についても同じだな。それらをちゃんり理解していれば、
どっちかにかたよることはありえない。
0454デフォルトの名無しさんNGNG
基本的に他人の書いたものは読みにくい/読みやすいとうのがあるわけで
それとは別に書いてある内容が問題

まぁ、読みにくいのを書いてる側も能力低し
読む側に能力を求めるのは間違ってるし
0455デフォルトの名無しさんNGNG
あのね、ポインターを使うか、配列で表現するかってのも、りっぱに「コーディングスタイル」の
話なの!

中括弧の位置や空白のあけかただけが「コーディングスタイル」だと思ってるやつは おおぼけ!
0456デフォルトの名無しさんNGNG
>>453
お前頭悪すぎー
0457デフォルトの名無しさんNGNG
> 基本的に他人の書いたものは読みにくい/読みやすいとうのがあるわけで

いいえありません。
まぬけな人間の「よみやすい」にあわせるとろくなことはない。
0458デフォルトの名無しさんNGNG
>まぬけな人間の「よみやすい」にあわせるとろくなことはない。

その通りだ。
ひらがなだけのぶんしょうがよみやすいとしゅちょうしてるひとにあわせるのはまったくいみがない
0459デフォルトの名無しさんNGNG
>>453
少なくとも390はポインタを使うなとは言っていないぞ

>>455
広義と狭義を区別しような
0460デフォルトの名無しさんNGNG
まぬけな人間が「読みにくい」ものを書くほうがロクなことはない。

gotoは多重ループを抜ける時なんかには使った方がいい。
それをgoto以外で実装するとなると、flagたてなきゃならんくなって読みづらい。
0461デフォルトの名無しさんNGNG
>>460
漏れはおまえの言っていることに大賛成だが、
おまえがここでgoto論争を開始しようとしていることには大反対だ
0462460NGNG
>>461
ごめんなさい。
0463デフォルトの名無しさんNGNG
電車でgoto
0464デフォルトの名無しさんNGNG
>447
>改行するなぼけ

>>447 = 改行が使えない人
0465デフォルトの名無しさんNGNG
> 広義と狭義を区別しような

そんなものはない。

コーディングスタイルは、コーディングスタイルの意味しかない。かってに狭義をつくるなよ ぼけ
0466デフォルトの名無しさんNGNG
私はイスカンダルのスターシア
0467おNGNG
相談なんですが、Cの文法を覚えたのち、どういった勉強していけば
良いのでしょうか?昨日書店で、Hなんとかマイコンの解説本を最初だけ
読んで見たんですが、面白そうなんです。
0468デフォルトの名無しさんNGNG
310 名前:お :04/05/15 16:34
C言語で文法覚えたんだけど、次、ジャバアプリケーションの勉強やるのは
いかほどでしょうか??ネットワーク系にあんまり興味ない自分なんですが。
0469デフォルトの名無しさんNGNG
311 :デフォルトの名無しさん :04/05/15 16:44
>>310
好きにしろ。


312 :デフォルトの名無しさん :04/05/15 16:46
>>310
べつにネットワークじゃないことやればいいんじゃない?
0470デフォルトの名無しさんNGNG
次のスレタイは 「C言語なら俺に訊け ぼけ! Part 80」 で。
0471デフォルトの名無しさんNGNG
「訊」はださいから嫌。
0472デフォルトの名無しさんNGNG
>>470
空白あけるなぼけ
0473デフォルトの名無しさんNGNG
効け は?
0474おNGNG
、、、。なんですが、、、。
0475おNGNG
469>あ!レスありました。どうもアリガトございます
0476デフォルトの名無しさんNGNG
fseekで行の先頭(ファイルの先頭ではなく)に戻るにはどうすればよいのですか?
0477デフォルトの名無しさんNGNG
バイト数で指定する
0478デフォルトの名無しさんNGNG
次のスレタイは 「C言語なら俺に訊け ぼけ! Part 80」 で。

えー !? 「言語」はぜひやめてくれ。
0479デフォルトの名無しさんNGNG
じゃあ Cランゲッヂ で
0480デフォルトの名無しさんNGNG
>>476
fgetpos()でおぼえておいて
fsetpos()で戻る
のが正しいやりかた、のはず。

「行」と言うからにはテキストを扱ってるんだろうが、
テキストとバイナリの区別があるシステムでテキストモードを
使ってる場合は、fseek()は要注意。
0481デフォルトの名無しさんNGNG
> 相談なんですが、Cの文法を覚えたのち、どういった勉強していけば良いのでしょうか?

でたー
「訳に立たない本を読んだあと症候群」
そんな質問をするってことは、「けっきょく身になってない」証拠よ。
0482デフォルトの名無しさんNGNG
>>476
1行読む前に場所を覚えておく。
pos = ftell(fp);
fgets(buf, sizeof(buf), fp);
fseek(fp, SEEK_SET, pos);
0483デフォルトの名無しさんNGNG
× 身になっていない。

○ 身についていない。
○ 実になっていない。
0484デフォルトの名無しさんNGNG
> テキストモードを使ってる場合は、fseek()は要注意。

そうでなくてもreadとwriteの間はseekを挟め!

っていうか、テキストファイルをいろいろ扱うのに、fseekなんか使おうっていうあたりでだめだめ。
そんな「いちばんだめなほうほう」をだれがおしえた? まさか本か何かに書いてあったとかいわないよな?
もしそうなら、本の名前言えよ! どうかんがえてもそれは「ダメ本」だ。
ダメ本リストに追加しなきゃいけないから、早く本の名前言え!!

# FYI: 通常は連結リストを使います。
0485デフォルトの名無しさんNGNG
FYI って何?
0486デフォルトの名無しさんNGNG
>>482
fgetpos/fsetposを使えよ。
0487デフォルトの名無しさんNGNG
>>484
いや、巨大なファイルを扱う可能性があるページャのようなものを
作ろうというのであれば、行リストを作っておいてfseek()で
ページングしようとするのは素直な発想だと思いますですよ。
0488デフォルトの名無しさんNGNG
fseekやftellは、freadやfrwiteと組み合わせろ!
fseekやftellを、fgets/fputsや、fgetc/fputcとは「絶対に組み合わせるな!」という
王道を小学校でおまえは習っていないのか? だめすぎ。
0489デフォルトの名無しさんNGNG
>>488
お前何も分かっていない。だめすぎ。
0490デフォルトの名無しさんNGNG
行リストを作っておいてfseek()で
NODE *prev;
NODE *next;
size_t pos;

0491デフォルトの名無しさんNGNG
いいや、わかってないのはどうみても489
0492デフォルトの名無しさんNGNG
> FYI って何?

へんな空白あけるな ぼけ
0493デフォルトの名無しさんNGNG
>>485
FYI (For Your Information)【エフ・ワイ・アイ】
最終更新日: 2002/04/19

「for your informaion(参考までに)」という意味を表す略語。ちょっとしたお知らせや、メモのような情報を伝える場合に使われる。
例えばメールの件名の文頭に「FYI:今週の新刊情報」などのように付け、非常に重要というわけではないが、
知っておくと有用な情報などを伝えたりする
Copyright (C) 2000-2003 Digital Advantage



だってさ。
0494デフォルトの名無しさんNGNG
>>484
writeの話なぞどこにも出ていないが?

>>485
For Your Information
勘違いしてるやつのキーワード。

0495デフォルトの名無しさんNGNG
おまえら、
ftell/fseekと
fgetpos/fsetposの違いっていうか、使い分け方をわかっていなさすぎ!
脳味噌たりなさすぎ!
0496デフォルトの名無しさんNGNG
そんなの使ったこと無い。
0497デフォルトの名無しさんNGNG
BTW: おいしいよね > 脳味噌
0498デフォルトの名無しさんNGNG
何なんだこのガキの争いみたいなのは(w

>>488
freadもfwriteもfgetcもfputcもfgetsも低レベルのread/writeと
違うセマンティックス持ってる点では同じだろ。ユーザがfreadに
1バイト読めと指示しても、stdioはBUFSIZ分は読もうとするから、
これは結局getc()と同じことになるんだぜ。

それと、はずかしいからfrwiteはやめれ。
0499デフォルトの名無しさんNGNG
OTL: だめすぎ...
0500デフォルトの名無しさんNGNG
500get
0501デフォルトの名無しさんNGNG
onz:...
0502デフォルトの名無しさんNGNG
喪前らそんなことだからAERAにバカにされるんだよ。
0503デフォルトの名無しさんNGNG
Cのことには饒舌だが(内容はイマイチだがな)、口の聞き方をまったく知らないバカがいるな。
反省せよ。
0504デフォルトの名無しさんNGNG
×口の聞き方
○口の利き方
0505デフォルトの名無しさんNGNG
OTL
0506デフォルトの名無しさんNGNG
使えよ! > そんなの使ったこと無い。

fseekもfgetposも基本だろ!
0507デフォルトの名無しさんNGNG
> 口の聞き方を

聞いてどうする! ぼけ
0508デフォルトの名無しさんNGNG
ま   った   く   うんこ  ば  かりの   す

れ  で   す
  れ
0509デフォルトの名無しさんNGNG
> これは結局getc()と同じことになるんだぜ。

むしろfgetcと同じだろ。

それに、たまたまバッファリングのことしってたから知ったかぶりしたかったんだろうけど、
この話題とバッファリングするかどうかはまったく無関係。
むりに自分の知ってる知識(しかも狭い!)に話をつなげようとする姿がみっともなーい!
0510デフォルトの名無しさんNGNG
まれででったすくうんこばかりのす
0511デフォルトの名無しさんNGNG
>>506
必要ないもん。
そんなん必要になるプログラムなんて、設計が糞。
0512デフォルトの名無しさんNGNG
ふふ。ようはまっとうなプログラムかいたことがないのね ;)
0513デフォルトの名無しさんNGNG
リンクリストぐらいおまえら使えよ!
0514デフォルトの名無しさんNGNG
たしかに。Cに限らず基礎の基礎だな > 連結リスト
0515デフォルトの名無しさんNGNG
使っていますが。
0516デフォルトの名無しさんNGNG
ウホッANSI標準関数を
「そんなん必要になるプログラムなんて、設計が糞」
と言いきるかね。
いや確かにgets()とかはいらないが……

むしろ、fseek(), ftell()よりはfgetspos(), fsetpos()だろ。
0517デフォルトの名無しさんNGNG
>>509
なら「何が問題」なのか話してみてごらん、おじさん聞いてあげるから。
0518デフォルトの名無しさんNGNG
> ウホッANSI標準関数を
> 「そんなん必要になるプログラムなんて、設計が糞」
> と言いきるかね。

getsとscanfに関してはそうだな ;-)

っていうか、いまどき「ANSI」とか言うほうがよほどはずかしい。ANSIのどれだよ!
0519デフォルトの名無しさんNGNG
そういえば、fgetposとかってMS-C 3のマニュアルで見て使ってたなぁ。
ビル君の環境にはテキストモードってのがあったんだね。
もう20年も使ってないからそんな環境のことは忘れてたよ。
0520デフォルトの名無しさんNGNG
>>518
516ではないけれど、言うと思った。
0521デフォルトの名無しさんNGNG
MSCの3.00にはfgetpos/fsetposなどありませんでした。
0522デフォルトの名無しさんNGNG
>>521
アスキーで日本語化されたやつね。
0523デフォルトの名無しさんNGNG
でも、ftell/fseekはあったぞ > MSC3.0

それよりもなによりも標準関数ではなく、Latticeから引き継いだ、
int86関数とintdos関数が好きでした。
特に前者は、LIBRARY関数のクセに自己変更コードになってるあたりが
そそりますよね。
0524デフォルトの名無しさんNGNG
> アスキーで日本語化されたやつね。

いいえ。日本語化などはされませんでした。
日本語文字はもともと通るし、逆に、「ソ」や「表」が文字列にあると化ける現象は
そのままでしたから、オリジナルのままです。
0525デフォルトの名無しさんNGNG
>>523
fgetpos(), fsetpos()は、UNIXのストリームモデルに沿ってないシステムの
ために後で追加されたインタフェースだからな。
ま、非常に単純な処理以外のことをやりたいんなら常にバイナリモードを使う
ってのも手だ。というかそっちのが個人的には健康によろしい。
0526デフォルトの名無しさんNGNG
>>524
マニュアルがね。
0527デフォルトの名無しさんNGNG
> マニュアルがね。

あれを訳したのは俺だ!
0528デフォルトの名無しさんNGNG
;;;
0529デフォルトの名無しさんNGNG
83年頃だったはず。まだプロトタイプ宣言なんかないころ!

その後、仕事がMSに移ってからは訳したのは某氏らしいがな。
0530デフォルトの名無しさんNGNG
>>529
センスないな
0531デフォルトの名無しさんNGNG
C言語は環境設定を絶対にしないと駄目なのか?
コンパイラも絶対必要なのか?
0532デフォルトの名無しさんNGNG
>>531
インタプリタなら必要ない。
0533デフォルトの名無しさんNGNG
>>529
もう20年も前だよ…
TurboCはお茶も飲めないのにMSCはカップラーメン作れたなぁ。
0534デフォルトの名無しさんNGNG
プログラマに昔話をさせると止まらない
0535デフォルトの名無しさんNGNG
プログラマに限らない。爺は若かりし日々の話が好き。
たいしたこと無い青春だったけど、現状よりはましだったから。
0536デフォルトの名無しさんNGNG
N88BASICのコンパイル速度は爆速だったな。
まさに一瞬で実行できた。
0537デフォルトの名無しさんNGNG
>>534
止まったようだが?w
0538デフォルトの名無しさんNGNG
>>441
>じゃあgotoは使うなって主張した人はgotoが使えないのでしょうか。(怖くて使えないとか?w)

ピンポン、正解
使うかどうかの判断ができないアフォほど教条主義的に金切り声でわめくのさ


>いつ誰が馬鹿にしたんだよ…。

え? おまえ自覚なかったの??
まあそうでなきゃ、あれだけの暴言吐いといてとぼけ通せるとは思ってないだろうな


>そうだね。セルだけを処理対象とする関数の引数はそういう型を使うだろうね。

ばーか、使わねーよ
mallocからどうやって代入すんだよ?
初期化でもするつもりでいたのかこのカスは (核爆

んで
>ふぅ・・・。いつのまにか漏れはポインタを使えない人間になってるんだなぁ。

太古から :-p
0539デフォルトの名無しさんNGNG
けんかは止めろってゆじゅねさんがいってたぞw
0540デフォルトの名無しさんNGNG
このスレにはガキと親父しかおらんのか。
0541デフォルトの名無しさんNGNG
漏れのような好青年もいますがね。
0542デフォルトの名無しさんNGNG
ファイルの任意の一行を削除する方法を教えてください。
0543デフォルトの名無しさんNGNG
>>683
神仏とかワケワカ言ってる
香具師には言われたくないなw
0544デフォルトの名無しさんNGNG
>>542
最初から一行づつ読み出し、消したい行だけスキップしてテンポラリファイルに書き込み
もとのファイルを消し、リネームして終わり。
0545デフォルトの名無しさんNGNG
>>544
熱い
0546542NGNG
どうやって消したい行だけスキップするんですか?
0547デフォルトの名無しさんNGNG
おまえは自分が消したい行もわからずに消そうとしてるのか?
0548デフォルトの名無しさんNGNG
分かってるだろうけど>>542は釣り。
この馬鹿VBスレにも同じこと書いてるよ。(あっちではシカトされてるが)
しかしんなことして何が楽しいのかねえ。。まともじゃねえな。
0549デフォルトの名無しさんNGNG
Cでグラフを作成したんですけどこれをエクセルに出力させるには
どうしたらいいんですか?
0550デフォルトの名無しさんNGNG
>>549
Cでどーやってグラフを作成したのか説明しろ。
エクセルに出力、を説明しろ。
0551デフォルトの名無しさんNGNG
CでデータをCSVで出力してExcelで読み込んでグラフ化しとけ
0552デフォルトの名無しさんNGNG
男は黙ってCoCreateInstance
0553デフォルトの名無しさんNGNG
> ファイルの任意の一行を削除する方法を教えてください。

だーかーらー、連結リストにしろ! って何度も言ってるだろ! ぼけ
話をきいてないから、そういうぼけなことを言うはめになる。
0554デフォルトの名無しさんNGNG
お前は、任意の一行の判定方法も知らないうちから何いってんのよ。
0555555NGNG
 
0556デフォルトの名無しさんNGNG
>>542
「作ってわかるCプログラミング」/技術評論社

P311: 10.2 行データの追加や削除

P327:
p = c->next;
c->next->prev = c->prev;
c->prev->next = c->next;
free(c->buf);
free(c);
return p;
0557デフォルトの名無しさんNGNG
>>556
これ、端のあるリストでしょ?
ポインタのチェックぐらい汁

if(c->next) c->next->prev = c->prev;
if(c->prev) c->prev->next = c->next;
0558デフォルトの名無しさんNGNG
> これ、端のあるリストでしょ?

いいえ「そういうださいことはまっとうなプログラマーはしない」そうです > 教科書によると
つまり「端はない」ので、
そういう不細工なチェックは必要ないんです。
0559デフォルトの名無しさんNGNG
初期状態:

static LINE list = {&list, &list, NULL};

これが「行がない」状態。
0560デフォルトの名無しさんNGNG
>>558, 559
そんな「端のない」ようにやるのは、常識中の常識だろ!
そんなんはだれでもしってんだよ! えらそうに言うんじゃねー!

基礎の基礎だ!
0561デフォルトの名無しさんNGNG
>>560
そんな基礎さえしならいひとも約1名いたようですが ;-)
0562デフォルトの名無しさんNGNG
その本おれももってる。
np->next = c;
np->prev = c->prev;
c->prev->next = np;
c->prev = np;
return np;

いかにもCらしいコードというか、Cのポインターの本領発揮! という感じの
プログラムって、こうじゃなきゃ! っていうノリの典型っていうかんじー
よね。
0563デフォルトの名無しさんNGNG
むつかしいっす。。
0564デフォルトの名無しさんNGNG
リストの端(1行めより前に行こうとするとき、および、最終行より後ろにいかないように)を
チェックしたり、

最後の1行を削除するときだけ特別な処理をしたり、

最初に1行足すときだけif文が1つ必要...な設計は、たしかにダサイよね。

0565デフォルトの名無しさんNGNG
連結リストについて、初心者にもわかりやすく解説してある本はないですか?
0566デフォルトの名無しさんNGNG
>>565
本の名前も出版社も書いてあるだろ? ろぐ嫁!
0567デフォルトの名無しさんNGNG
556のことですか?
その本は怖いので(^^;
それ以外の本で、ひとつよろしく(^^)/
0568デフォルトの名無しさんNGNG
> それ以外の本で、ひとつよろしく(^^)/

ねーよ!
まともな計算機科学の入門書にならあるが、おまえのほしがってるのは、
Cのへぼい初心者用の本でってことだろ? だったら、そこに名前が出てたvoid本以外では
みたことないな。

> その本は怖いので(^^;

どこがこわいんだよ! あんなへぼい本。しょせん初心者本だぞ?
0569デフォルトの名無しさんNGNG
> どこがこわいんだよ!

著者名が! ;-)
0570デフォルトの名無しさんNGNG
あたしゃ今度はお茶がこわい!
0571デフォルトの名無しさんNGNG
こんな顔かい?
0572デフォルトの名無しさんNGNG
>>558,560
先頭や最後の行を削除しようとしたら access violation か。
おめでてーな。

こんな輩が現場に紛れていることを考えるとゾッとするね。
0573デフォルトの名無しさんNGNG
コンソールより入力された2Byteの16進文字列(00〜FFまでの範囲:0-9/a-f/A-F)を
バイナリに変換するプログラムを作ろうと思い、
いろいろ探していたら、過去に他人が作ったプログラムが見つかりました。
しかしながら中身がいまいち理解できません。

1文字目は(対象文字 - 0x37) << 4

2文字目は上記よりシフトを抜いて処理。となっていました。
シフトしてるのはわかるんですが、なんで0x37でひくと
うまく処理できるのかわかりません。

入力できるのは00−FFまでの255パターンと限定してるので
0x37でひくのに意味があるのかなと思っているのですが、、
どなたかご教示ください<m(__)m>

ほかにこんな方法を使うともっといいというのがあったら重ねてお願いいたします。

0574デフォルトの名無しさんNGNG
コンソールから入力したら '0''0'とかだろ?

もっとも a-f や A-F では別の値を引かねばならないが(w
0575デフォルトの名無しさんNGNG
あんま見ない例。
include <stdio.h>
int main()
{
func(){puts("a");}
func();
retun 0;
}
これgccでコンパイルしたら通ったんだけど、
こういう関数内関数ってANSI準拠?
0576デフォルトの名無しさんNGNG
>>575
とおんねぇYO!!
0577デフォルトの名無しさんNGNG
#includeの#が飛んでた。
0578デフォルトの名無しさんNGNG
#include <stdio.h>



int main()
{
int func()
{
puts("FUNC");
}
func();
return 0;
}
0579デフォルトの名無しさんNGNG
>>575
gccの拡張。

>>573
例えば'A' - 0x37 は、10になる。恐らく、'0'-'9'のときは0x30引いてるんだろ。
0580デフォルトの名無しさんNGNG
コノスレよんでるとペアプロなんて現実問題ありえない気がしてくんだけど、
やっぱマのひとって実際に会うとみんな目立たないけど良い人なんだよね。
0581デフォルトの名無しさんNGNG
そんなことないよ^^
0582デフォルトの名無しさんNGNG
> 先頭や最後の行を削除しようとしたら access violation か。
> おめでてーな。

こいつ頭わるすぎ。こんなのがまぎれてる現場とかも、たまにあるんだよねー。
幸いいまのところはいないが。
0583デフォルトの名無しさんNGNG
>>312さんいますか?
二進数で入力された値をintegerにする関数作りますた
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1084589792&res=2
にはってあります。
ちょっと改造すれば>>312さんの要望を満たすと思います。

ただ、32bitで入力してMSBが1のとき負数表示されてしまいます。
よかったら原因をおしえてください。
0584デフォルトの名無しさんNGNG
>>583
>>326 があるのにわざわざ作ったのか。
負数になるのは "%ld" だから。符号つきlong int指定じゃん。
あとなんでwhile(1)を2重にしてるんだ? breakでもループ先頭に戻すためとか
コメントついてるが、 continueでいいじゃんか。
0585583NGNG
>>584さん
「新C語入門 ビギナー編」という本を買ってきて初めて作った関数なんです。
continue文の使い方を知りませんでした。
んで、誤った操作をした時にどうやったら最初に戻れるかを考えていて、
whileで2重ループにしてbreak使ったらいいじゃん!
って思いついたんです。
0586デフォルトの名無しさんNGNG
>>568
オレの知ってる限り、初心者入門本で、連結リストをわかりやすく解説しているのは
この2冊だけだ。

『作ってわかるCプログラミング』日下部陽一/技術評論社
477411328X (2001/11) 2,289円

『C言語データ構造とアルゴリズム―配列とリストの処理で学ぶプログラミング手法』手塚忠則/カットシステム
487783091X (2003/10) 2,310円

0587デフォルトの名無しさんNGNG
> 「新C語入門 ビギナー編」という本を買ってきて初めて作った関数なんです。

そういうクソ本でおぼえるから、そういうおかしなコード書くようになるんだよ! ぼけ
0588デフォルトの名無しさんNGNG
誰でもお勧めしない本とか理解していれば苦労しない
0589デフォルトの名無しさんNGNG
1つの本に依存するな、それは袋小路だ

できるだけ大勢の、色んな香具師のコードを見ろ
スタイルも癖も知能程度も玉石混交だが
異口同音に言わんとするところが見つかるはずだ
他人から教わることなどその程度と心得ろ
どちらかと言うと、嫌いなタイプでも大抵の香具師の
コードに付き合ってやれる対応力を鍛えておけ
それ自体が貴重な資産だし、善悪の垣根を越えて
技術を盗みかき集めることにもなる
0590デフォルトの名無しさんNGNG
参考にならない意見ばかり偉そうに書いてる奴って同一人物?
0591デフォルトの名無しさんNGNG
後ろにぼけってつけてるやつは同じだろ。
正直、うざい。
0592デフォルトの名無しさんNGNG
>583
 もうおわかりとおもいますが、このスレ常連程度のレベルでも君を罵倒する
には事欠かない知識が得られる。
 真面目な君なら、そういう(>587みたいな)低レベルな人間程度の知識はすぐ
に得られますから、へこまず、頑張って下さい。
 プログラミングは、もっと知的で、楽しい。あなたのようなチャレンジの
積み重ねこそが重要なんです。
0593デフォルトの名無しさんNGNG
> 1つの本に依存するな、それは袋小路だ

いや、クソ本は何冊買ってもだめなものはだめ。
いい本は1冊で十分。
ようすに冊数は無関係だということだ。
0594デフォルトの名無しさんNGNG
> できるだけ大勢の、色んな香具師のコードを見ろ

ああ、これはウソ。だめなコードは(少なくとも初心者のうちは)みないほうがいい。
最初のうちはとにかく、いいのだけをみろ。いいのが少なければ、べつにすくなくてもいい。

本物だけみて育てば、にせものはぱっとみでわかるようになるが、
数ある偽物をいっぱいみたところでセンスはそだちません。

江戸時代の両替商の子供は、赤ん坊のころから、本物の小判をおもちゃが代わりに
育てられます。ずっと本物の手触りに親しんで育つと、大人になって偽物小判は
触るだけで、もしくは臭いだけで一瞬でわかるようになったそうです。

逆に、数ある偽物小判もふくめていろいろ最初のうち触ってると、けっきょくセンスは
そだたないそうです。

キタナイコードは実務になればいくらでも見る機会はあるんだから、ある程度しっかりした
センスがそだってから見ればいい。
0595デフォルトの名無しさんNGNG
>593
 なにごとにつけ、そういう無謬性の信奉というのは却って大きな無知に捉われている場合が
ほとんどですので気をつけて下さい。
 本は、あくまで本です。字面だけでなく、読む人のそのときの認識や環境など、全てがひとつ
となって知識を形づくるのです。ましてや、全てにおいて妥当な内容の本など、ないと思った方が
正しいでしょう。
0596デフォルトの名無しさんNGNG
後ろにぼけってつけてるやつは同じやつだろ。
正直、うざいぞ ぼけ
0597デフォルトの名無しさんNGNG
> 全てにおいて妥当な内容の本など、ないと思った方が

けっこう多いね。ようするにふだんからダメ本しか見てないから、
「せいぜい良くても部分的、すべてにわたって'よい'本など存在しない」なーんていう
まぬけなことを思うようになるわけだな。
0598デフォルトの名無しさんNGNG
まあ、2重連結リストに「端」を作るやつはかなりまぬけ。
まっとうな現場で働いている人だったら、あり得ない。
0599デフォルトの名無しさんNGNG
Cなら教科書はK&R一冊でいいような気がするな。
C++ぐらいになると一冊じゃ足りない気がするな。
0600デフォルトの名無しさんNGNG
K&Rは英語だからなあ
0601デフォルトの名無しさんNGNG
>>600
ようするに石田晴久のウンコ訳はハナから無視、と(w
0602デフォルトの名無しさんNGNG
でも、C++のイテレータとアルゴリズムっぽくやろうとすると、begin, endを作りたくならない?
まあ、begin と end を繋いでも出来ないことは無いけど。
0603デフォルトの名無しさんNGNG
> begin と end を繋いでも

ふつうつなぎません。おまへはバカか?

かつ、端も作らない。
常識!
0604デフォルトの名無しさんNGNG
それは端があるかどうか微妙な構造だな。
0605デフォルトの名無しさんNGNG
は?
ここまでヒントを書いても、(というか以前の発言でほとんどコードまででてるのだが)
まだ理解できないのか?

初心者本でも出直してこいよ!
0606デフォルトの名無しさんNGNG
やだね。
0607デフォルトの名無しさんNGNG
端を作らないリストがベストと思いこんでいる時点でイタタタタタなわけだが。
0608デフォルトの名無しさんNGNG
先頭行を最終行につないだら、どっちみち最後の1行を消すときや、
最初に1行つくるときに条件判断が必要になるだろ! ぼけ
それぐらいわからんのかよ。

端をつくらないってのが、どういうことかまだわからんのか?
0609デフォルトの名無しさんNGNG
「タ」が1つ多いよ
0610デフォルトの名無しさんNGNG
>>602
std::listはdouble linked listでかつイテレータ対応ね。
0611デフォルトの名無しさんNGNG
ここ、レベル低いなあ。

横から口出して悪いかもしれんが、私答えかいていい?
いつまでもやられてもうっとおしいので。
0612デフォルトの名無しさんNGNG
常識だね > 端を作らないリストがベスト
0613デフォルトの名無しさんNGNG
>>611
× うっとおしい(←変換できない)
○ うっとうしい(鬱陶しい)

答えるのは歓迎(笑)
0614デフォルトの名無しさんNGNG
>>613
ケチつけるんだったら、教えてあげません。
0615デフォルトの名無しさんNGNG
いろんな意味でレベル低いね。どっちもが。
0616デフォルトの名無しさんNGNG
>>611
日本語勉強してから来い
0617デフォルトの名無しさんNGNG
おい。そんなにむずかしいことかあ?

>>556みたいなので削除ができて (1行めや最終業でも特別あつかいせずに)
>>557 みたいなので追加ができればいいんだろ?

>>562 みたいな間抜けなif文いれなくてもすむような構造ってわけだ。
おれはCとか詳しくないし、この答え知らなかったが、考えたらすぐわかったぞ?

おまえら頭悪すぎるのでは?


先頭と末尾をつなげれば「先頭」や「末尾」を扱うときに特別扱いはほとんどしなくていいが、
それでも、最初に1行を追加する場合や、最後に残った1行を削除する場合に特別扱いが生じて
しまうので却下。
0618デフォルトの名無しさんNGNG
特別扱いの番人要素を一個、末尾と先頭の間に挟むだけですな。
0619デフォルトの名無しさんNGNG
番人って訳はダサいなあ。
直訳っぽいし。そもそも英語でもいまはその言い方しない。
0620デフォルトの名無しさんNGNG
空ノードを挟むって話?
まさかそんなことで引っ張っているわけ無いよな。
0621デフォルトの名無しさんNGNG
>>619
今は何て言うんですか?
0622デフォルトの名無しさんNGNG
「空」じゃあねーだろ。
0623デフォルトの名無しさんNGNG
くだらん、そんな事で優越感に浸っていたわけか。
もったいぶるから、なんか他にあるのかと思っちまった。
0624デフォルトの名無しさんNGNG
あと「初期状態」が重要。
まだ1行も行を読み込んでいない状態と、
すべての行を削除したあとは、まあ同じ状態ですが、
その状態がリスト上でどう表現されているか
0625デフォルトの名無しさんNGNG
> まさかそんなことで引っ張っているわけ無いよな。
これと
> くだらん、そんな事で優越感に浸っていたわけか。
これは、

かなりまけおしみっぽいっていうか、ガキのいいわけっぽくてはずかしいよね。
0626デフォルトの名無しさんNGNG
きっと「そんなことならしってたよ!」とか
「わざわざ言うから、もっとむずかしいのがあるのかとおもったよ!」
とかいうあまりにも恥ずかしいいいわけを書きそうなやつらだ ;-)
0627デフォルトの名無しさんNGNG
>>625
お前も今最高に恥ずかしい。
0628デフォルトの名無しさんNGNG
あ、すでに書いてるし...
予想をうらぎらない人たちですね...。

なんでこういう人って、「おやくそく」に律儀なんだろう (^^;
0629デフォルトの名無しさんNGNG
わたしが答えを書けば、わたしがいわれてたところか。
かかなくてよかった。
0630デフォルトの名無しさんNGNG
っていうかー
なんで、そんな基礎の基礎を知らないやつがえらそうにかいてるんだよ。
0631デフォルトの名無しさんNGNG
お約束っていうか、匿名だからしょうがないだろ。
いったもん勝ち、否定したもん勝ち。
自演と区別もつかないから反論ととかしても意味無いし。
反論するも反論に反論するも、アホ。
0632デフォルトの名無しさんNGNG
だってわたしの読んだCの入門書にはそんなことまで書いてなかったんですもの
0633デフォルトの名無しさんNGNG
レベル低すぎ...
0634デフォルトの名無しさんNGNG
IDがつけば、無問題なんだがな。
バカがバカさらすのはともかく、意味無く煽るやつは減るだろ。
0635デフォルトの名無しさんNGNG
だから一冊で充分だなんて単純すぎるんだってば、何ごとも同様。
0636デフォルトの名無しさんNGNG
>>586
で、その2冊以外におすすめはないでしょうか?
連結リストで。

あ、Cでおねがいします。C++は使いそうにないので。
0637デフォルトの名無しさんNGNG
常識だろ > だから一冊で充分だな
0638デフォルトの名無しさんNGNG
>>636
その2冊じゃあなんでダメなんだ?
0639デフォルトの名無しさんNGNG
連結リストは、自分で書いて覚えないとダメだ。
本読んだって書いてあることは大して変わらん。
自分で行き詰まりながら解決していくのが一番勉強になる。
0640デフォルトの名無しさんNGNG
> 連結リストは、自分で書いて覚えないとダメだ。
> 本読んだって書いてあることは大して変わらん。

何とくらべて「たいしてかわわない」のでしょうか?

自分で書くために、参考になる本がほしいのですが?
0641デフォルトの名無しさんNGNG
639は、さっき「そんなkと実は知ってたもん!」って言ってたやつか ;-)
0642デフォルトの名無しさんNGNG
k ってなんだ???
0643デフォルトの名無しさんNGNG
>>638
っていうか、とりあえずその2冊のうちどっちか買って試してから、きけばいい! と
いってらればいいじゃん。

で、おまえならどっちをより薦めるよ?
0644デフォルトの名無しさんNGNG
>>640
どの本を読んでも大して変わらないって事です。

>>641
ま、反論しても意味無いからな。
お前の行為もただの妄想だということに気がついてな。
0645デフォルトの名無しさんNGNG
>642
 おまえの本には載ってないのか?
0646デフォルトの名無しさんNGNG
「ファイルの任意の一行を削除する方法を教えてください。」という質問に>>553と答えるのか。
0647デフォルトの名無しさんNGNG
本ばかりに頼ってないで、それらを参考に自分で書いて失敗してみるのが一番いい。
で、それを検証していけばいずれ正解に辿り付く。

他力本願イクナイ
0648デフォルトの名無しさんNGNG
「ここ2chにかいてあることと」たいしてかわりない、といいたいんだろ?
でも、ここかなりレヴェル低いぞ。
いいかげんなこと書くやつ多いし。
それとくらべて本も「おなじようなもの」だと本気で思ってるやつは、
きっと、ふだんろくな本を読んでいない証拠だ!

わたしの意見としては「まっとうな本」を読んで、自分でコード書いてためせということだ。
2chなんか読んでちゃだめ。
0649デフォルトの名無しさんNGNG
>>648
いい加減、見苦しくなってきたぞ。
0650デフォルトの名無しさんNGNG
せんべい喰ってお茶飲んだ方がましってことだな。
0651デフォルトの名無しさんNGNG
> 本ばかりに頼ってないで

どこから「ばかりにたよって」なんていうのがでてきたんでしょうか?
連結リスト、なんてのはならわないと知らなかったわけです。
自分で試すのは「とうぜん」やっているわけで、何をどう試すかの基本的な知識
の参考になる本がほしいのです。2chではさすがにだめそうなので(かなり
知ったかぶりの人が多いし)
0652デフォルトの名無しさんNGNG
だれが「2chのレベルと大して変わらない」といっているんだ?アホカ?
0653デフォルトの名無しさんNGNG
じゃあ、何とくらべて「たいしてかわらない」んでしょうか?
0654デフォルトの名無しさんNGNG
>>651
試してどうだったの?
0655デフォルトの名無しさんNGNG
だーかーらー、連結リストはまだためしてないわけです。
0656デフォルトの名無しさんNGNG
2chの玉石混交なレスだって、実際にコード書いて検証すれば
何がダメで何がいいのか大体分かってくると思うがな。
0657デフォルトの名無しさんNGNG
連結リストは、まあ基礎の基礎で、実務でもしょっちゅうつかうだけだが、
グラフの半順序集合のトポロジカルソートとかは学習したのか?
b-treeやバイナリーtreeを配列で実装するほうほうは学習したか?

JavaやC++はそのへん楽できるから逆に仕組みを理解しないままクラスを使っちゃう
やつもいて、いまそいつらのせいで困っているところだが、

Cの場合は、自分で勝手にへんな構造を作り出すやつがむかしいたなあ。
まあ、ああならないためにも、基礎の学習はがんばってくれたまえ。
0658デフォルトの名無しさんNGNG
> 実際にコード書いて検証すれば

だからそのための参考書がほしいのです。
0659デフォルトの名無しさんNGNG
>>655
webで「連結リスト」を検索して、それみて書いてみるだけでもいいと思うけど。
最初から正解を書こうとしないで色々やってみるんじゃダメなの?
0660デフォルトの名無しさんNGNG
べつに最初から正解を書こうとなど思っていません。

なぜ本じゃだめなのですか? webや2chのほうがいい?
0661デフォルトの名無しさんNGNG
> webで「連結リスト」を検索して、それみて書いてみるだけでもいいと思うけど。

それと同じことを本でやろうと思っているだけなのですが。
なんで本だと「最初から正解をもとめる」ことになっちゃうんでしょうか?
ふつう本を読んでそれを参考にあれこれ自分で試すわけだよね?
なんで本だとだめなの? webや2chだとなんでいいの?
0662デフォルトの名無しさんNGNG
そら、お金かかんないし。
いきなり正解を覚えるよりは勉強になる、という考え方も出来なくは無い。
0663デフォルトの名無しさんNGNG
べつに本を買うぐらいの金はどうでもいいんです。
あなたの財布がへるわけじゃないでしょ?

> いきなり正解を覚えるよりは勉強になる、という考え方も出来なくは無い。

だからなんで本だと「いきなり正解」なんでしょうか?
0664デフォルトの名無しさんNGNG
どうしても本がいいなら、推奨図書スレにいけば?
0665デフォルトの名無しさんNGNG
>>663
2chはレベルが低くて玉石混交だから。
少なくとも専門書籍のほうが正解までの道のりは簡単だと思うよ。
ちがう?
0666デフォルトの名無しさんNGNG
ここではなぜだめなのですか?
0667デフォルトの名無しさんNGNG
なんかグダグダだな。
このスレ的には実際にやってみて分からない部分を聞いてくれればいいんだが。
0668デフォルトの名無しさんNGNG
> 少なくとも専門書籍のほうが正解までの道のりは簡単だと思うよ。

どうしてですか? 「正解」なんていうものがあるわけじゃなく。
本はただの参考にするものでしょう。
0669デフォルトの名無しさんNGNG
答える価値無いな。
0670デフォルトの名無しさんNGNG
> このスレ的には実際にやってみて分からない部分を聞いてくれればいいんだが。

だからやってみたいので、参考書を教えてください。
0671デフォルトの名無しさんNGNG
>>670
本の話題は推薦図書のスレへどうぞ
0672デフォルトの名無しさんNGNG
なんか、連結リストの常識をしらないで知ったかぶりしてたやつが、
失態をごまかすために、話題をそらそうと暴れているように見える ;-)
0673デフォルトの名無しさんNGNG
この質問者と「リストの端がどうのこう」のいってた香具師って、もしかして同一?
0674デフォルトの名無しさんNGNG
連結リストの話題はどこのスレがいいですか?
0675デフォルトの名無しさんNGNG
>>672
なるほど。
0676デフォルトの名無しさんNGNG
連結リストの話題が出ているので、ついでに質問しちゃいます。

doublyなふつうの連結リストを与えて、
それを「ソーティング」するにはどうしますか?
たとえば、Cの標準関数のqsortを使いたいのですが、その場合のやり方を教えてください。
0677デフォルトの名無しさんNGNG
今そういう質問すると荒れるだけだと思われ。
0678デフォルトの名無しさんNGNG
>>676
どうしてもqsortじゃないと駄目かね(笑)
0679デフォルトの名無しさんNGNG
qsortつかわなくてもいいですが、
ようするに「簡単に」やるほうほうが知りたかっただけです。
qsortでは無理なんですか?
0680デフォルトの名無しさんNGNG
>>679
標準関数のqsortは配列に対するポインタ操作を前提としているから、普通にやったら無理。
リストはデータ構造が違うから。
0681デフォルトの名無しさんNGNG
>>679
無理。qsortは配列相手の交換処理を中でやってしまってるから。
doubly linked listはその交換処理が違うからね。
素直にquick sortを別途実装するしか。
0682デフォルトの名無しさんNGNG
あるごりずむは別にquick sortじゃなくてもいいです。
それにqsortって中味はquick sortじゃないですよね?

で、qsortを使わなくてもいいので、
やり方の概要を教えてください。
0683デフォルトの名無しさんNGNG
>>682
C ソート アルゴリズム
とかでググれば色々でてくる
0684デフォルトの名無しさんNGNG
(1) リストを先頭からなめて配列に詰め直す
(2) qsortに食わせる
(3) リストを再構成する
じゃだめ?
0685デフォルトの名無しさんNGNG
>>683
ソート自体はね。
交換部分だけリンクリスト用に直せば良い
0686デフォルトの名無しさんNGNG
> C ソート アルゴリズムとかでググれば色々でてくる

いいえ、googleでは1件もみつかりませんでした > リストのソーティング
0687デフォルトの名無しさんNGNG
>>684
色々問題はあるがそれでも出来る(笑)
0688デフォルトの名無しさんNGNG
>>683
は、リストが何であるかさえわかっていない低能。
なのに、話題に参加したいぼけ
0689デフォルトの名無しさんNGNG
>>676
C++使えば?
もしくは、STLのソース見て std::list::sort 辺りを参考にするとか。
0690デフォルトの名無しさんNGNG
> 色々問題はあるがそれでも出来る

どんな問題があるか教えてください。
また、リストを直接ソーティングするのとどっちが速いですか?
0691デフォルトの名無しさんNGNG
> C++使えば

C++だとリストもソーティングできるのかー
でも、C++を使いたいわけではなく、
Cのリストのあつかいを学習したいのです。
0692デフォルトの名無しさんNGNG
>>690
回りくどいし、メモリを倍使う。
0693デフォルトの名無しさんNGNG
>>692
速度的にはどうですか?
0694デフォルトの名無しさんNGNG
メモリー2倍といっても、ノードの部分だけですよね? たとえばテキストファイルとかなら
行のテキストの内容の部分まで2倍にもつわけじゃあないから、
メモリー的にはたいしたことないはず。
0695デフォルトの名無しさんNGNG
クレクレ君か
0696デフォルトの名無しさんNGNG
条件が許すならビンソート使うのも手
0697デフォルトの名無しさんNGNG
>>692
回りくどくはないだろ
0698デフォルトの名無しさんNGNG
リストに対してはマージソート使え。
0699デフォルトの名無しさんNGNG
リスト構造に拘ってデバッグに苦労する香具師も居れば
配列構造でデータ操作効率を上げるのに苦労する香具師も居る。
適材適所ってだけの話なんだがな。
0700デフォルトの名無しさんNGNG
700get v(^-^=)
0701デフォルトの名無しさんNGNG
ここ読んでる「初心者」さん達へ

>>680 や >>612 のような
「常識だから」端を作らないとか
特定の解答を論点先取するような
アドバイスは聴く(≠聞く)のは構わんが
発言者の知能程度には懐疑的でいろ

アルゴリズムが適切か不適切か判断するには証明か反例が必要だし
性能的に有利か不利か判断するには実測が肝心だ

バブルソートだって分野によっては速いことがあるし
端の処理が例外になったら何が悪いのかを説明もせずに
公理のように振りかざしてくるインチキ論法に騙されるな

真面目に設計する気持ちまでからめ取られたら元も子もないぞ
0702デフォルトの名無しさんNGNG
>>701
ぼけ
0703デフォルトの名無しさんNGNG
>>701
ぼけ
0704701NGNG
訂正
誤: >>680
正: >>608

失礼した
0705デフォルトの名無しさんNGNG
気づくまで20分もかかったか
0706578NGNG
盛り上がってるとこ遅レスで悪いけど、
>>579サンクス。

スコープ内でしか使わない関数はスコープ内で定義した方が
管理しやすいと思ったんだけどなあ。
0707デフォルトの名無しさんNGNG
>>691
だから、STLはソースの中身見れるから、リストのソートのコードも読める。
参考にして勉強したら?
0708デフォルトの名無しさんNGNG
ちなみに、STLのlistのsortはマージソートの亜種。
0709デフォルトの名無しさんNGNG
リストのソートなら、「常にソートされているリスト」が一番楽。
0710デフォルトの名無しさんNGNG
そらそうだ。
0711デフォルトの名無しさんNGNG
javaならJava 2 SDKがありますが、c言語なら何があるんですか?
0712デフォルトの名無しさんNGNG
>711
意味不明
Cコンパイラーの事か?
そりゃいろいろあるよ。
0713デフォルトの名無しさんNGNG
list_empty()
list_add()
list_for_each()
list_entry()
list_del()
を使ってる私はボケボケですか?(=゚ω゚)ノ
0714デフォルトの名無しさんNGNG
>713 その list_* はそれぞれ何をするのか分かりにくいんだが
list_add()
list_del()
は1要素単位の追加削除なのか?

list_empty()
は空かどうかを調べるのか?空にするのか?

list_entry()
は何だ?

list_for_each()
はgetNextみたいなもんか?


...命名がダメダメだな
0715デフォルトの名無しさんNGNG
参考書見ながら勉強してんですがうまくコンパイルできません。
教えてください。
{
int n;

printf("数字を入力して下さい。\n");
scanf("%d",&n);

if( n == 0 )
printf("0ですね。\n");
else if ( n > 0 )
printf("正数ですね。\n");
else ( n < 0 )
printf("負数ですね。\n"); //この行のprintfの前に";"を入れろとでます。なぜでしょうか?
}
0716デフォルトの名無しさんNGNG
>> else ( n < 0 )
0717715NGNG
あげてしまいました。すいません。
0718715NGNG
>>716
解決できました。
本当にありがとうございました。

0719デフォルトの名無しさんNGNG
>>717
ageたら何が悪いのか説明もせずに
公理のように振りかざしてくるキモヲタの好みに合わせる必要はないぞ

自分の質問を大勢に見てもらいたければ
誰にも遠慮はいらん堂々とageろ
0720デフォルトの名無しさんNGNG
vc++7.0で
unsigned int a = -50;
printf("%d", a);
とすると-50と表示されますが
unsinged として宣言している変数になぜマイナス値を表現できるんでしょうか?
0721デフォルトの名無しさんNGNG
>>720
"%d"だから。
0722デフォルトの名無しさんNGNG
>>720
ちなみに%dにはint型のデータを与えなければならない
そこもとがしているようにunsigned int型のデータを与えるのはオフスペックだ

なぜ、そんなことをしたのだ!? 答えろったら答えろ!!

・・・そこもとの苦言の中に、この問題の本質が隠されていることを予言する・・・
0723デフォルトの名無しさんNGNG
>そこもと
?
0724デフォルトの名無しさんNGNG
>>714
じゃああなたの考えるナイスな命名をどうぞ。
0725デフォルトの名無しさんNGNG
>>714じゃないけど。

is_empty()
add_back()
add_at()
del_at()

みたいなかじでどうやろ。

entry() は、ほんとに何するのかわからん。
0726720NGNG
unsigned int で符号部無し32ビットですよね
定数部-50は16進数で,80000032と表現されて
それが符号部無しのaに代入され
aの値は十進数で21474836898と表示されると勘違いしてるんですが
どこから間違ってるでしょうか
0727デフォルトの名無しさんNGNG
>720
>721 yome
0728デフォルトの名無しさんNGNG
>>726

・関数のプロトタイプ宣言とは何か?
・printf は与えられた引数の型をどうやって見分けるのか?

を小一時間考えれ。
0729デフォルトの名無しさんNGNG
>関数のプロトタイプ宣言
はこの際関係ないと思われ
0730デフォルトの名無しさんNGNG
>>729
>>関数のプロトタイプ宣言
>はこの際関係ないと思われ

何故関係無いと思うのかを小一時間・・・
0731デフォルトの名無しさんNGNG
>730 符号無値の書式指定は何?ってだけだろが
0732720NGNG
>>728
変数のaのビット列は16進数で80000032ですが
フォーマット指定子%dは最上位ビットを符号フラグとしている
とうこうでしょうか?
0733デフォルトの名無しさんNGNG
>>732
そういうこと
0734デフォルトの名無しさんNGNG
では、>>720 が
printf("%d", a);
と書かれた時、printf 側は a を「何型」として
受け取っているのか、理解していると思っているのか?
0735720NGNG
有難うございました
0736デフォルトの名無しさんNGNG
printf や scanf などの書式指定は、対象の変数の型がなんであろうと、書式で指定された型のほうを
優先してしまう。とうことだな。

unsigned int a = -50; については、負定数 -50 のビットパターンをそのまま unsigned int 型変数に格
納している。だからキャストなどしない限り、a は符号なし整数であり、式の中でも負数とはみなされない。

問題の例では、たまたまprintfが、変数型を見ていないから、負数として判断してくれただけ。
0737デフォルトの名無しさんNGNG
>>732
ところで-50が0x80000032になるのか。
0738720NGNG
>>734
そこがわかって無かったです
0739720NGNG
>>736
明快な解説有難うございます。
0740728=730=734NGNG
で、>>736の説明で分かったのか?

俺なら納得できないがな(w
0741デフォルトの名無しさんNGNG
>740

↓これで分からないのはアフォのもまえだけだ
>書式指定は、対象の変数の型がなんであろうと、書式で指定された型のほうを優先
0742720NGNG
unsigned int a = -50;
signed int b = -50;
a == bとはならないと思っていました
そういう人は少ないですか?
0743デフォルトの名無しさんNGNG
>>742
それ以前にunsignedに負数を代入するのも不自然だけどね。
0744デフォルトの名無しさんNGNG
>>742
ん? 正しいぞ

a == b には暗黙変換が含まれているが
変換の対象となる値が、変換後の型で表現できない場合、結果は未定義

未定義とは地球が爆発しても知らんと言うくらい何でも起こりうることを言う
0745デフォルトの名無しさんNGNG
>742 if() だったらならない気がする
0746デフォルトの名無しさんNGNG
unsigned int a = -50;
signed int b = -50;
printf("%d , %d ,(%d)", a, b, (a==b));

結果は、-50 , -50 , (1) だよ。

0747デフォルトの名無しさんNGNG
>>746
だから未定義だっちゅーの
わかんねーやつだなw
0748デフォルトの名無しさんNGNG
>747
え? でもイコールだったよ。











とか言ったら頭から火吹いて倒れちゃいそう。
0749デフォルトの名無しさんNGNG
早期から「鼻から悪魔が出てくる」機能を実装しておけば、
バグプログラムも半減しただろうに。
0750デフォルトの名無しさんNGNG
プロセッサに依存ってことでしょ。
大抵はプロセッサのレジスタに符号の概念がない(命令側で使い分けてる)し、
符号付きと符号無しで比較する命令なんてないから、746のような結果が出るわけで。

もしプロセッサがこれに対応していたら、イコールにならないとみた。
0751デフォルトの名無しさんNGNG
unsigned int a = -50;
signed int b = -50;
signed int c = -40;

printf("%d , %d (%d)\n", a, b, (a==b));
printf("%d , %d (%d)\n", a, c, (a==c));

-50 , -50 (1)
-50 , -40 (0)
0752デフォルトの名無しさんNGNG
movl$-50, -4(%ebp)
movl$-50, -8(%ebp)
movl-4(%ebp), %eax
cmpl-8(%ebp), %eax
jne.L2
.
.
0753デフォルトの名無しさんNGNG
strlenのreturnを忘れても動いたからって
それが正しいと言い張っているのと同じだぞ
おまいらの議論は
0754デフォルトの名無しさんNGNG
>753
 strlenのreturn

ってなんですか? 念のため言うと、純粋に知らないので質問しています。
0755デフォルトの名無しさんNGNG
未定義だどうのと言おうが、>752は -S でソースを出した結果
だと思うのだが、結果的には 比較している値は正しいし、true
にもなるわけだろ。その辺ちゃんと説明しろよ。


0756デフォルトの名無しさんNGNG
「未定義だ」という以上の説明が必要なのか?
0757デフォルトの名無しさんNGNG
いらねえよな。未定義の意味がわかるなら。
0758デフォルトの名無しさんNGNG
「未定義だ」ではさっぱりわからん。
0759デフォルトの名無しさんNGNG
> unsigned int a = -50;
unsigned int型のaに代入するためにint型の-50が型変換される。
int->unsigned intの場合、未定義じゃなくて、ある決まった正の数になる。
> a==b
bはunsigned int型に変換される。するとbはある決まった正数(上と同じ数)になる。
だから必ずa==b。
0760デフォルトの名無しさんNGNG
>>759
>int->unsigned intの場合、未定義じゃなくて、ある決まった正の数になる。

ダウト!
0761デフォルトの名無しさんNGNG
ttp://www.joqr.co.jp/ag/comcha/title.swf
0762デフォルトの名無しさんNGNG
>>759
教えるなよw
魚血してたのに
0763デフォルトの名無しさんNGNG
未定義とか処理系依存てのは内部表現の問題なんじゃないか?
0764デフォルトの名無しさんNGNG
>>763
未定義は処理系依存に含まれる
未定義と処理系定義は互いに排他的な集合
0765デフォルトの名無しさんNGNG
> 条件が許すならビンソート使うのも手

どんな方法ですか?

>>699
この話題とは無関係ですよね。
0766デフォルトの名無しさんNGNG
list_addとかは はLinuxのkernel内で使ってるから。
説明無しでも
みなさんご存知かと思いましたよ(*´Д`)
0767デフォルトの名無しさんNGNG
つか、仕様外の動作。
だからそういうwarningも用意されている。
無視したきゃしてもいいけど、どうなっても知らんぞという意味。
0768デフォルトの名無しさんNGNG
> バブルソートだって分野によっては速いことがあるし

ってのと

> 端の処理が例外になったら何が悪いのかを説明もせずに

これはまるっきり無関係なので、ようするに、「なんとかこじつけよう」としている
姿勢がみえみえで、みっともないだけだと思うぞ ;-)
0769760NGNG
>>762
すまそ
0770デフォルトの名無しさんNGNG
> scanf("%d",&n);
>
> if( n == 0 )

3: scanf使うなよぼけ
5: 空白あけろよ ぼけ
5: 空白あけるなよ ぼけ
5: 空白あけるなよ ぼけ
0771デフォルトの名無しさんNGNG
> add_back()

背中を足すのかな?
0772デフォルトの名無しさんNGNG
> unsigned int で符号部無し32ビットですよね

Javaならね
0773デフォルトの名無しさんNGNG
ぐぐったら、
符号付き整数型A ⇒ 符号無し整数型B
・Aが負
 Aの型サイズ ≦ Bの型サイズ : A + (Bの型の表現しうる最大値+1)
 Aの型サイズ > Bの型サイズ : (Bの型の表現しうる最大値+1) - (-A値 % (Bの型の表現しうる最大値+1))

ってのがあった。
未定義になるのは、
浮動小数点型 ⇒ 汎整数型
小数部は捨てられます。
整数部の値が汎整数型で表現できない場合は、その動作は未定義となります。

となっていたが、まちがっているのか?まじよくわからん。
0774デフォルトの名無しさんNGNG
> printf や scanf などの書式指定は、対象の変数の型がなんであろうと、書式で指定された型のほうを

こいつはぼけだ。scanfにかぎらず、呼ばれた関数側で型がわかるわけねーだろ!
0775デフォルトの名無しさんNGNG
> プロセッサに依存ってことでしょ。

ぼけな知ったかぶり君だな。
なんで「プロセッサ」に依存するんだ ;-)
0776デフォルトの名無しさんNGNG
> 未定義は処理系依存に含まれる
> 未定義と処理系定義は互いに排他的な集合

「処理系定義」が意味不明だ。勝手に言葉作るなよぼけ
0777デフォルトの名無しさんNGNG
> list_addとかは はLinuxのkernel内で使ってるから。

でも、あれは端はないだろ?
0778デフォルトの名無しさんNGNG
#include <stdio.h>
main()
{
 char *p, *q;

 printf("文字列を入力>");
 p = gets(q);
 printf(p);
}

これなんですが、どうしてこれでいいのか分かりません。
p = gets(q) の部分なんですが、 *p = gets(*q) なのではないかと思ってしまいます。
あと、printf(p)もprintf(*p)に。
「*p」、「*q」というのはそれぞれアドレスp、アドレスqの内容のことだから、
「アドレスqの内容をアドレスpの内容とする」ってことにした方がいいような気がするんです。
漏れのポインタに対する概念が間違ってるんだと思うんですが、どこが違うんでしょうか?
0779760NGNG
>>773
この場合「ぐぐる」のは調査方法として邪道
googleではなくisoかjsaを訪ねろ
0780760NGNG
>>778
アドレスは&
おまえさんの読み方は思いっきり逆
0781デフォルトの名無しさんNGNG
760だがコテになったのはうっかりで
同一人物とアピールする意図はない
0782デフォルトの名無しさんNGNG
>  p = gets(q);

gets使うなよ ぼけ
0783デフォルトの名無しさんNGNG
>>782
本文にレスしろ ぼけ
0784デフォルトの名無しさんNGNG
fgetsにしとけば、こういうぼけ君がまちがえにくいという効果もあるね ;-)
0785デフォルトの名無しさんNGNG
>>784
こういうぼけにエサを与えないという効果があるだけだ
0786デフォルトの名無しさんNGNG
> 本文にレスしろ ぼけ

はい。こちら本文。
0787デフォルトの名無しさんNGNG
> これなんですが、どうしてこれでいいのか分かりません。

わかるまで立ってろ! ぼけ
0788デフォルトの名無しさんNGNG
清原

  打撃・.290 去年(2流) 今年(3流以下)
  HR 26本   (1流) 今年(2流)
  走塁 盗塁0   (3流以下)
  守備 ・・・・
  人気・威圧感 (超1流)

0789デフォルトの名無しさんNGNG
>>786
てにをはを間違えるな ぼけ
0790778NGNG
数値としてのアドレスを&で表すってのは知ってるつもりです。
そんで、そのアドレスの中身(データ)は*で表す、と考えているんですが、
これで合ってるでしょうか?
0791デフォルトの名無しさんNGNG
> アドレスは&
> おまえさんの読み方は思いっきり逆

いや、

> 「*p」、「*q」というのはそれぞれアドレスp、アドレスqの内容のことだから、

この部分はあってるだろ? 言ってることのこの部分に関しては。(そのあとがいけないだけで)
まちがってるのはむしろ780
0792デフォルトの名無しさんNGNG
>>790
あっているが、778の文面ではそれができていない
0793デフォルトの名無しさんNGNG
> 数値としてのアドレスを&で表すってのは知ってるつもりです。
> そんで、そのアドレスの中身(データ)は*で表す、と考えているんですが、

そこまでは合ってます。
で、「アドレスを渡すのは何のため?」ってのを少しは頭使えばいいだけ ぼけ
0794デフォルトの名無しさんNGNG
> あっているが、778の文面ではそれができていない

というか、780はアドヴァイスとしてとても不適切。
0795デフォルトの名無しさんNGNG
なんだこのスレは。
0796デフォルトの名無しさんNGNG
>>793
「数値としての」ってのがついてるあたりが怪しいな。
そこを削除すれば合ってるが。
0797デフォルトの名無しさんNGNG
ただしいアドヴァイス
「で、そのアドレスを何を指示するために渡しているんだ?」だな。
5分以内に答えろ。
0798デフォルトの名無しさんNGNG
提案なんだが。

みんな気持ち良く議論するために、分末に「ボケ」を必ずいれることにしないか? ボケ
0799デフォルトの名無しさんNGNG
> 分末に

ぼけ
0800798NGNG
訂正:分末->文末

>799 指摘 & ご賛同ありがとう。 ボケ
0801778NGNG
ただのqに例えば「hello」を代入すると、「*qはアドレスhelloの中身」とかいうことに
なってしまうんじゃないかと思うんです。
だから*qを使ってqの中身に代入すればいいと思ったんですが、どうでしょうか?
0802デフォルトの名無しさんNGNG
> 799 指摘 & ご賛同ありがとう。 ボケ

へんな空白使うなぼけ
へんな空白使うなぼけ
0803デフォルトの名無しさんNGNG
> アドレスhelloの
はいここでだめね。

そんなことはどーでもいいから、おれの質問に答えろよ ぼけ!

こういうぼけってのは、ようするにひとのいうこと聞いてないんだよな。
本や説明が悪いわけじゃなくて。

自分でかってに妄想に走るから理解ができないわけだ。

とにかく答えろ!

「そのアドレスは何を指示するために渡しているんだ?」

0804デフォルトの名無しさんNGNG
>>801
"hello"は配列
hello\0 は"hello"の内容
q="hello"; は
q=&"hello"[0]; の省略形

このあたりの話は些細な言葉のあやが
致命的な誤りにつながるから
十分に気をつけれ
0805デフォルトの名無しさんNGNG
このぼけのへんな思い込みは、
qとかpとかいう変数名が「あそのアドレスの内容」だとおもっていて、
"hello"とかいうのが物理的な番地につけるわかりやすい名前であるところの「アドレス」だと
思っているところだろ?

まったく逆だよ ぼけ
"hello"ってのが、入る「内容」
変数の名前ってのは、アドレスに対応しているもの、つまり特定のアドレスにつけられた
名前なわけ。qとかpとかいう場所があるわけだ。
で、ポインター変数ってのは、そこに入る「内容」も実はアドレスだという特殊な変数なだけ。
0806デフォルトの名無しさんNGNG
> q="hello"; は
> q=&"hello"[0]; の省略形

いや、それは大うそだ。
0807デフォルトの名無しさんNGNG
>>805
ほほー
_"hello"ってな一意な外部名が生成されるってかw
0808デフォルトの名無しさんNGNG
> このあたりの話は些細な言葉のあやが
> 致命的な誤りにつながるから

などと言っておきながら

> hello\0 は"hello"の内容

などと書くのが、こいつがかなり低能な証拠だな。
教えられるほうは7文字あるのだと思い込んでしまう危険性大
0809デフォルトの名無しさんNGNG
*p ってのは、 "hello"[0] なんだろ、ぼけ
0810デフォルトの名無しさんNGNG
おれの質問に答えれば、すぐ理解できるのにな。
0811778NGNG
>「そのアドレスは何を指示するために渡しているんだ?」
入力されたデータをどこに代入するか、でしょうか?

なんかもうアドレスぼけしてきますた
0812デフォルトの名無しさんNGNG
「代入」ではないな。

で、どこにってのは
そのアドレスの場所には、それを入れるだけの場所はあるのか?
なんであるとわかるんだ?
それをまず考えろよ。

で、具体的に何番地に入れろと、どこで指定している? それをよく考えろ!
0813デフォルトの名無しさんNGNG
q = 1234;

としておけば、1234番地に入るわけだ。
0814デフォルトの名無しさんNGNG
あ、pだ。
0815デフォルトの名無しさんNGNG
だいたい元のプログラムで gets したら、
スタックぼっこわしていくだろが・・・そこはいいのか?
配列と、ポインターの違いがわかってないからどうでもいいのか・・・
0816デフォルトの名無しさんNGNG
ここのひとたちは罵倒の能力に比べてひとに教える能力はほとんどゼロ。
教えたい気持ちはあるところが逆に始末が悪い。

>778さん。周りにリアルで聞ける人はいないの? ぼけ
0817デフォルトの名無しさんNGNG
そういうおまえは、教える能力もないわけだな、ぼけ
0818デフォルトの名無しさんNGNG
で、1234番地は、あいてるのか?
もしかして大事なデータがはいってたりしないのか?

で、もし1234があいてたとしてもとなりの1235番地はどうなんだ?

で、どれだけ連続であいてれば、それが入るんだ?

で、そもそも、その場所をつかっていいって誰が許可したんだ?

おれはしてないぞ?

ってことだ。少しは頭を使え ぼけ
0819デフォルトの名無しさんNGNG
っていうか816は教える能力も知識もまったくなさそうだな。

おれが一番教えるのうまいな。
0820デフォルトの名無しさんNGNG
> *p ってのは、 "hello"[0] なんだろ、ぼけ

ぜんぜんちがうだろ...
0821デフォルトの名無しさんNGNG
まず場所とれよ! ぼけ
0822デフォルトの名無しさんNGNG
>817,819
いたいとこツカレテそのままかえす辺りがあおいわ、ぼけ
0823デフォルトの名無しさんNGNG
まず場所とって、その先頭アドレスを渡すんだよ! ぼけ

そう入門書に書いてあっただろ?

あるていど以上よくできた入門書なら、おまえみたいな妄想君 (ひとのいうこと
ぜんぜんきいてなくて自分で勝手におもいこんでしまい、そのせいで理解できないぼけ)が
よんでも、誤解しないように書いてあるもんなんだよ。

そうなってないってことは、その本がよくないってことだ。

まず、読んでいる本の名前を白状しろ! ぼけ
0824デフォルトの名無しさんNGNG
char *p,*q; ってのは単なるアドレスの格納場所であって
文字列を入れる場所ではない。文字列を入れる場所は、
char buff[32]; p=buff;とか、 p=malloc(100); などとして用意する。
これでわかったか? ぼけ
0825778NGNG
あ、もしかしてこうですか。

 char *p, *q
によってp、qそれぞれ先頭1バイトのアドレスが確保される。
 p = gets(q)
は、「入力されたデータをアドレスqに確保して、それをアドレスpに代入」
printf(p)
でアドレスpの中身が表示されるのは、配列と同様だから。

あー、なんかしっくりこないぞぼけ
0826デフォルトの名無しさんNGNG
あ、あとgetsは使うな。fgetsにしろ
0827デフォルトの名無しさんNGNG
> char *p,*q; ってのは単なるアドレスの格納場所であって
> 文字列を入れる場所ではない

言ってることは正しいが。教え方がまったくだめ!
正しいことを言うことが目的なんじゃなくて、ぼけをうまく「誘導」して正しい考えに
みちびくためなんだから、それの正しい定義を言うのは逆効果。

ぼけなやつが思い込んだ1つ前のわかれみちまでたちもどらせて、正しい道を選択
させるようにするべきだ。

この言い方ではよけいに混乱する。
0828デフォルトの名無しさんNGNG
>>820
p="hello"; の直後の *p は "hello"[0] だっていえば許してもらえるのか? ぼけ
0829デフォルトの名無しさんNGNG
>  char *p, *q
> によってp、qそれぞれ先頭1バイトのアドレスが確保される。

されません。こいつがこういう勘違いしたのは、824の説明のせいだよなあ。やっぱりよそう通りだ。

pとかqには、「アドレス」格納する分の大きさしかとられない。
文字列の1文字がそれにはいるかどうかは保証されない
(たいがい2〜4文字分のおおきさはあるものだが、ここではどうでもいい)
0830デフォルトの名無しさんNGNG
> p="hello"; の直後の *p は

空白あけろ ぼけ
0831798NGNG
>827
さすがです。あなたはきっと良い教師(=優秀なプログラマ)ですね、ぼけ
0832デフォルトの名無しさんNGNG
で、本の名前を言え!
0833デフォルトの名無しさんNGNG
>>808
プログラム片に全角文字使うなよ ぼけ
0834デフォルトの名無しさんNGNG
なんか void みたいのがいるな。
0835デフォルトの名無しさんNGNG
>>834
どれがそう?
0836デフォルトの名無しさんNGNG
>>835
きみ。
0837デフォルトの名無しさんNGNG
教えてよー
0838778NGNG
いま使ってる本は「独習C第3版」です。
ていうか、よく見たら>>778のプログラムは間違った例として出されてました。
「正しくありません。gets()を呼び出すときに指定する引数は、実際の配列へのポインタでなければなりません。」
と解説してあります。
でも正常にコンパイルできるし実行も問題ありません。なんなんでしょか?

>>829
>pとかqには、「アドレス」格納する分の大きさしかとられない
これはつまり、確保はしないけどスタート地点は決めておく、ってことでしょうか?
0839デフォルトの名無しさんNGNG
土日はこのスレ使いもんにならんな。
0840デフォルトの名無しさんNGNG
> いま使ってる本は「独習C第3版」です。

ダメ本じゃん...

> でも正常にコンパイルできるし実行も問題ありません。なんなんでしょか

コンパイルエラーにならないからこそ、わざわざ解説してあるんだろ ぼけ

> これはつまり、確保はしないけどスタート地点は決めておく、ってことでしょうか?

全然ちがう。
「アドレス」の値もまた、メモリー上に格納されるべきものであるということだよ。数値や
文字と同じように。

0841デフォルトの名無しさんNGNG
コンパイルできれば正しいプログラムだっていうわけではない、ってことぐらいは
そろそろおぼえとけ。
0842デフォルトの名無しさんNGNG
>>838
>でも正常にコンパイルできるし実行も問題ありません。なんなんでしょか?
たまたま問題ないように見えるだけです。
char *p, *q;
では、どこともつかない、使ったら何が起こるかわからない場所を指したポインタが
二つ用意されます。
まず最初にp, qには実際に使って良い場所を指すように初期設定しなくては
いけませんぼけ
0843デフォルトの名無しさんNGNG
あの本はダメ本。
訳がいけないわけではなく、原書からしてだめ。

たとえば今回のような「初期化していないポインターを参照」するような誤りを
説明するのに、その例は実際によくある例ではあるが、むしろ人工的な例で説明したほうが
わかりやすい。
(たとえばgets()でやらずに *p = 10; みたいな)

入門書の大原則、「正しい例は実際にある自然なものを」「正しくない例は、実際に
よく見かける間違いではなく、あえて人工的に」をはずしているところばかりある。
まるっきりうらがえしなんだよな。
あの本。
0844デフォルトの名無しさんNGNG
> では、どこともつかない、使ったら何が起こるかわからない場所を指したポインタが

ここでは「場所」といわずに、あえて「アドレス」という言葉をつかって解説して、
さっきの解説との関連を持たせないとだめ!
0845デフォルトの名無しさんNGNG
おいおい、大猿たちの立場はどうなるんだYO!
0846デフォルトの名無しさんNGNG
> まず最初にp, qには実際に使って良い場所を指すように初期設定しなくては

そこで「初期設定」とか意味不明のことばをつかうからいけない
そこは一般用語で言うべきだ。
0847デフォルトの名無しさんNGNG
おまえに合った、ちゃんとした入門書を買えよ!
0848778NGNG
独習Cってダメ本だったんでつか・・・鬱欝

char *p, *q ,buf[32],def[32];
p=buf;
q=def;

としても動きました。というかこれが正常なんですね。
あー、これならなんだかわかった気がします。
ちょっとだけぼけから開放されますた
0849デフォルトの名無しさんNGNG
どんな本がお薦めですか?
0850デフォルトの名無しさんNGNG
一般用語だとなんだろう?
0851デフォルトの名無しさんNGNG
> 独習Cってダメ本だったんでつか・・・鬱欝

そんなことは、ここでさんざん言われてるだろうが! ぼけ
0852デフォルトの名無しさんNGNG
>>849
こう、ドバーンっとわかって、ガガーーンとくるようなやつ。
0853デフォルトの名無しさんNGNG
> としても動きました。というかこれが正常なんですね。

いや、そもそもpやqは何のために準備したんだ? それを考えろ!
pやqに代入せず、bufやdefを直接与えろよ! ぼけ
0854デフォルトの名無しさんNGNG
>>848
その本を擁護するつもりはないが
今このスレには不純な動機で特定の本のみ推薦したがっている
著者または親衛隊が常駐しているようなので
特に推薦図書については言われたことを鵜呑みにしない方がいい
0855デフォルトの名無しさんNGNG
def ?
0856デフォルトの名無しさんNGNG
> こう、ドバーンっとわかって、ガガーーンとくるようなやつ。

『作ってわかるCプログラミング』日下部陽一/技術評論社
0857デフォルトの名無しさんNGNG
> その本を擁護するつもりはないが

してるじゃん。おもいっきり
0858デフォルトの名無しさんNGNG
必死だな >業者さん
0859デフォルトの名無しさんNGNG
> char *p, *q ,buf[32],def[32];

空白あけろ ぼけ
0860デフォルトの名無しさんNGNG
業者ってどこだ? 出版社?
0861デフォルトの名無しさんNGNG
アダルトちゃうか?
0862デフォルトの名無しさんNGNG
> 独習Cってダメ本だったんでつか

あれは著者の技量が低すぎだな。
騙されて買う人間も少ないとは思うのだが...。
0863デフォルトの名無しさんNGNG
っていうか、
説明にgetsつかってる時点で、あきらかにだめだろ.
0864778NGNG
ああ、こうやっても動かない・・・

char buf[32],def[32];

printf("文字列を入力してください: ");
buf = gets(def);
printf(buf);

エラー E2277 a.c 8: 左辺値が必要(関数 main )

左辺値って、bufがあるのに・・・
なんでだみょーーーーーー
0865デフォルトの名無しさんNGNG
ぼけ。
getsの戻り値をなんでひろってるんだ?
それを考えろよ。

エラーチェックしてないんだろ?
だったら、なんでわざわざ変数に入れる?
printfに直接わたせよ ぼけ
0866デフォルトの名無しさんNGNG
>>864
getsを捨てろ。
0867デフォルトの名無しさんNGNG
>>864
bufを定義した場合のメモリ消費量を総額で答えよ
0868デフォルトの名無しさんNGNG
っていうかまずgetsやめろ。せめてfgetsにしろ
0869デフォルトの名無しさんNGNG
getsやめてfgetsにしたら直るのかよ ぼけ
0870デフォルトの名無しさんNGNG
左辺値ってのは「アドレス」じゃないとだめなわけ。
定数は却下
a = b; や
a = 0; はOKだけど、
5 = b; がだめなのはわかるだろ? それと同じだ。ぼけ
0871デフォルトの名無しさんNGNG
>>870
アドレスが左辺値だってよ
int a;
&a = 0;
氏ねよぼけ
0872デフォルトの名無しさんNGNG
> getsやめてfgetsにしたら直るのかよ

なおるよ。
こういうぼけな質問するたつが、ほぼまちがいなく9割以上の確率で、
scanfかgetsを使っている事実をみるだけでも、それぐらいわかるでしょう。
つまりつかわなければ、自分で解決するようにできてるんです。
0873デフォルトの名無しさんNGNG
>>872
buf = と何の関係があるんだよ? 早く氏んでね
0874デフォルトの名無しさんNGNG
> &a = 0;

ぼけ「左辺値」ってのは、1段階参照レヴェルがずれるんだよ。
それぐらいおぼえてから出直してこい! しったかぶりめ
0875デフォルトの名無しさんNGNG
char *gets(char *s)
getsは次の入力行を配列sに読み込む。このとき行末の改行記号は'\0'に置換される。
これで返されるのは, s(ファイルの終わりもしくはエラー発生時にはNULL)である。
0876デフォルトの名無しさんNGNG
>>874
ほほー
ずれたら&a=が通るんかよ
必死だな >業者さん
無能だな >著者さん
0877デフォルトの名無しさんNGNG
> buf = と何の関係があるんだよ?

そんなこともわからんのか?
fgetsにすれば、こういうまちがいには自分で気づくようにできてるんだよ。
したがって、こういう質問も発生しない。あるていどのぼけでも自分で「あ,そうか」と
気づくようにできてる。

なのではやくfgetsにしろ
0878デフォルトの名無しさんNGNG
>>875
sが配列だあ? 頭元気?
0879デフォルトの名無しさんNGNG
> ずれたら&a=が通るんかよ

こいつ低能。
ずれるから&つけなくてもアドレスなんだよぼけ
「内容」ではなく
0880デフォルトの名無しさんNGNG
>>878
さあ、カニパン2版参照しただけ。
0881デフォルトの名無しさんNGNG
> このとき行末の改行記号は'\0'に置換される

この仕様が難物なんだよなあ。
0882デフォルトの名無しさんNGNG
>>877
ああ、わからんね
fgetsにした場合のコードでも示したらどうなんだ?
0883デフォルトの名無しさんNGNG
答えかいたら意味ねーだろ
0884デフォルトの名無しさんNGNG
>>879
じゃbuf=はずれないから「アドレスに代入」できるんだな?w
0885デフォルトの名無しさんNGNG
たしかにぼけな質問するやつはたいがいgetsかscanfつかってるな。
0886デフォルトの名無しさんNGNG
>>883
関係ねーのを自ら証明するから書かないだけだろ
間違いは間違いなんだよ さっさと引き下がれ
0887デフォルトの名無しさんNGNG
>>885
こいつ統計もボロボロだな
0888778NGNG
一応gets解説の項なんで、getsやめたら本末転倒なんですよね。
まあ、わからないのはポインタの部分なんで確かに関係ないんですが・・・
それにしてもgetsの戻り値ってどうなってるんでしょうか?
エラーが発生した場合は0が返されると書いてあったんですが。
左辺値はアドレスでなければいけないらしいですが、bufっていうのは
buf[32]で宣言した部分の先頭アドレスが入っているのではないのでしょうか?
0889デフォルトの名無しさんNGNG
> じゃbuf=はずれないから「アドレスに代入」できる

はあ? おまえ頭だめすぎ。でなおしてこいよ。
できねーだろ > 代入bufをどうやって変更するんだよ!
0890デフォルトの名無しさんNGNG
> 一応gets解説の項なんで、getsやめたら本末転倒なんですよね。

いや、むしろgetsつかうのが本末転倒。
というのは、目的があってこそ手段があるのだから。
べつにgetsを使いたいがためにCをやってるわけではあるまい?
0891デフォルトの名無しさんNGNG
>>888
エラーが発生したら0.
じゃあ、エラーじゃなかったら、なんでしょう?
0892デフォルトの名無しさんNGNG
>>888
「左辺値」と「変更可能な左辺値」を区別しとけ
0893デフォルトの名無しさんNGNG
>>889
>できねーだろ > 代入bufをどうやって変更するんだよ!

それをおまえに聞いたんだよ
答えられないぼけは早く氏ねったら
0894デフォルトの名無しさんNGNG
> エラーが発生した場合は0が返されると書いてあったんですが。

0というかNULLだな。

> bufっていうのはbuf[32]で宣言した部分の先頭アドレスが入っているのではないのでしょうか?

ああ、その「入っている」っていう言い方がだめ。
入ってるのではなく、「〜で宣言した部分の先頭アドレスそのもの」だ。
入ってるだと、何か変数にいれてあるみたいにきこえるだろ?

a = 5; の aには「5が入ってる」とはいうが、
5とか3+2のことを指して「5が入ってる」とはいわんだろ?

a = 10; はOKでも、
5 = 10; や
3 + 2 = 10; ができないのはなぜかよく考えろ! ぼけ
0895デフォルトの名無しさんNGNG
> それをおまえに聞いたんだよ

いまさらごまかしても遅い ;-)
0896デフォルトの名無しさんNGNG
>>894
>0というかNULLだな。

#define NULL 0
プププ
0897デフォルトの名無しさんNGNG
あのー よこからすみません。

> a = 10; はOKでも、
> 5 = 10; や
> 3 + 2 = 10; ができないのはなぜかよく考えろ! ぼけ

この部分だけわかるので、わたしに答えさせてください。

「それが左辺値というものだから」が答えですね。
0898デフォルトの名無しさんNGNG
ポインタ変数にアドレスが入っている、っていう言い方は別にいいだろ。ぼけ。
問題は getsの戻り値はどこかに入っているというよりも、受け取るんだということを理解しろってことだ。ぼけ。
0899デフォルトの名無しさんNGNG
> 「左辺値」と「変更可能な左辺値」を区別しとけ

こいつぼけ。
「左辺値」の意味をわかってない...
変更できない左辺値ってなんだよ ;)
0900デフォルトの名無しさんNGNG
> ポインタ変数にアドレスが入っている、っていう言い方は別にいいだろ。ぼけ。

bufのどこがポインター変数だよ! ぼけ。よくコードを見ろ!
0901デフォルトの名無しさんNGNG
>>895
ごまかしてんのはおまえだ
889が全然説明になってねーな (プゲラ
0902デフォルトの名無しさんNGNG
> 問題は getsの戻り値はどこかに入っているというよりも、受け取るんだということを理解しろってことだ。ぼけ。

いいや、ちがう。
うけとったものをどこに入れるのかという問題だ。
0903デフォルトの名無しさんNGNG
> ごまかしてんのはおまえだ

ごまかしかたがみっともないね。
ひっしだな ;-)
0904デフォルトの名無しさんNGNG
処置なし! ぼけ!
0905デフォルトの名無しさんNGNG
>>899
わかってないのはおまえだ
bufは変更できてbuf=による変更ができない理由の
核心に触れる説明がきれいさっぱり抜けたままw
0906デフォルトの名無しさんNGNG
>>904 みっともなさすぎ
0907デフォルトの名無しさんNGNG
> bufは変更できて

できねーだろ ぼけ
0908デフォルトの名無しさんNGNG
土日はおもれーなぁ、おい。

ぼけ
0909デフォルトの名無しさんNGNG
>>903
必死なのはおまえ
884に早く答えてね無能な879さん
0910デフォルトの名無しさんNGNG
>>907
gets(buf);
0911デフォルトの名無しさんNGNG
> 必死なのはおまえ

いーや おまえだろ。
ぼけなことを言ったのをごまかそうとひっしにからんでくるが
言った事実は消えない ;-)
0912778NGNG
はう・・・こうしてもだめだ・・・
*buf = gets(def);

エラー E2349 a.c 8: 移植性のないポインタ変換(関数 main )

*bufってのは、あくまでデータそのものであるから
代入なんてお門違いってことなんでしょうか?
0913デフォルトの名無しさんNGNG
> はう・・・こうしてもだめだ・・・
> *buf = gets(def);

だーかーらー
まず、なんで戻り値を何かに代入しなきゃいけないんだ? ってところから考えろよ
まず、代入しようとなどおもわずに、
printfに直接渡せよ! ぼけ

っていうかprintfには、もどってきた値じゃなくて、もとのバッファーのアドレスを
渡してるんだっけ?

だったら、代入せずに、ほげほげ = をとってみろ
そこでまた考えろ!
0914デフォルトの名無しさんNGNG
>>912
buf に何を代入しようとしているの?
0915デフォルトの名無しさんNGNG
>>911
なるほど、押し問答に持っていってドローを狙いたいわけね
いいよ別に、あんたを泣かしてもしゃーないし
追求されたくないんなら放っといてやるよ無能な879さん
0916デフォルトの名無しさんNGNG
つまり、
渡すほうは確保した配列のアドレスを渡し、
うけとるほうは、ポインター変数にすればいいんだな。
0917デフォルトの名無しさんNGNG
>>916
答えかいちゃったら、いみねーだろ
0918デフォルトの名無しさんNGNG
> 押し問答に持っていってドローを狙いたい

なるほど、本音が出たね ;-)
0919デフォルトの名無しさんNGNG
>>918
おまえのな
0920デフォルトの名無しさんNGNG
> 追求されたくないんなら放っといてやるよ無能な879さん

捨てぜりふとしては、かなりおもしろみに欠けますね。

「ふ、きょうはこれぐらいにしといてやる...」と同じ程度。
0921デフォルトの名無しさんNGNG
>>918-919 ぼけ!
0922デフォルトの名無しさんNGNG
>>920
追求されたいのか、されたくないのか、そんくらい言えよ
0923デフォルトの名無しさんNGNG
追求と追及ぐらいちゃんと区別しろよ ぼけ
0924デフォルトの名無しさんNGNG
>>923
で、どっちをお望みなんだよ? 無能な879さん
0925デフォルトの名無しさんNGNG
あ、ごまかしたな ;-)
0926778NGNG
printf(gets(buf));
でやったらちゃんとできました。
でも、gets(buf)の戻り値が何故代入できないのかがわからん・・・
0927デフォルトの名無しさんNGNG
だーかーら
a = 5; ができて
10 = 5; ができない理由はわかる?

a = b; ができて
10 = b; ができない理由はわかるの? >>926
0928デフォルトの名無しさんNGNG
>926
返り値がポインタだからじゃないでしょうか? ぼけ
0929デフォルトの名無しさんNGNG
>>925
で、どっちをお望みなんだよ? 無能な879さん
追及する/[しない]
0930デフォルトの名無しさんNGNG
> 返り値が

それは浴びるものです。
0931デフォルトの名無しさんNGNG
>>926
正常処理時には、gets() の引数にわたしたbuf[] の先頭アドレス が戻り値として返される。
要するに gets は 渡されたバッファの中にデータを突っ込んで。その先頭を返しているだけ。
だから。

char buf[100], def[100];
buf = gets(def);

なんて書いたら、これはつまり、

buf = def;

って書いているのと同じこと。
0932デフォルトの名無しさんNGNG
> で、どっちをお望みなんだよ?

お、まだあばれてごまかす気だ ;-)
いくらはずかしいのをごまかしたいからと言って、あばれすぎだよ。
0933デフォルトの名無しさんNGNG
>>931
言ってることは合ってるが、このあたりを理解できていないやつに対する説明としては
不適切。よけい混乱するか、そこまでいかなくても、
理解の助けにはならない。
0934デフォルトの名無しさんNGNG
>930
 まさか「戻り値って言って下さい。」とかいわないよね? ぼけ
0935デフォルトの名無しさんNGNG
>>932
デフォルトは見たよな 無能な879さん
0936デフォルトの名無しさんNGNG
> まさか「戻り値って言って下さい。」とかいわないよね

こんな間抜けな質問をするってことは、
「じゃあ何て言えばいいんだ?」と思ってる証拠。
それぐらいの常識は身につけてからでなおしてこいよ。
0937デフォルトの名無しさんNGNG
>936
 そんな憶測はずれてるよ。
 それより>930の意図を教えてくれよ。
0938デフォルトの名無しさんNGNG
>>931

>buf = def;
>
>って書いているのと同じこと。

の何がいかんのかが、わからなくて聞いてるんじゃないか?
0939デフォルトの名無しさんNGNG
新着200以上て
0940デフォルトの名無しさんNGNG
> そんな憶測はずれてるよ。

いーや、あたってる。
0941778NGNG
char buf[32],*p;
p = gets(buf);
printf(*p);

gets(buf)がbuf[32]の先頭アドレスを返すってことなら、
これでpにそのアドレスを代入すればポインタで値が表示できると思ったんですが、
またもやダメでした・・・。もうぼけぼけです
0942デフォルトの名無しさんNGNG
> の何がいかんのかが、わからなくて聞いてるんじゃないか?

だね。だから解説としては適切ではない。
0943デフォルトの名無しさんNGNG
>>941
おしい
0944デフォルトの名無しさんNGNG
しかしほかの分野ってすごい勢いで進歩してるのにソフトって進歩遅せーなぁ。
Cって何年前の言語だ? なんか別なの使えよ > おまえら全員。
0945デフォルトの名無しさんNGNG
> printf(*p);

なんでこうやろうと思うんだろう?
0946デフォルトの名無しさんNGNG
> またもやダメでした・・・。もうぼけぼけです

っていうか、何行めでエラーなのかの行番号ぐらいちゃんと見ろよ! ぼけ
0947デフォルトの名無しさんNGNG
>>944
ソフトの進歩と言語は関係ないし。
0948デフォルトの名無しさんNGNG
>940
 はずれてるってば。
 それより>930の意図は、「戻り値っていうんだよ。」ですよね。
 はぁ〜。
0949778NGNG
printf(p);
にしたらできますたー。
printfって、直接アドレスを指定することもできるんですね。
0950デフォルトの名無しさんNGNG
> はずれてるってば。

いーや、あたってる

むしろ、
> それより>930の意図は、「戻り値っていうんだよ。」ですよね
この推測がおおはずれ。

自分の推測がおおはずれなくせして、
あいてが自分にたいしてまちがった推測をしているとおもいたがる(実際にはあたってるのに)のが
おお間抜けだ。
0951デフォルトの名無しさんNGNG
>>949
まぁ、普通はfputs とか使うんだけどな。
0952デフォルトの名無しさんNGNG
>>949
それ、よした方がいい
試しに
%s
って入力してごらん
0953デフォルトの名無しさんNGNG
> printfって、直接アドレスを指定することもできるんですね。

いいや。ちがう
「も」ではない。
アドレスを指定すること「しか」できない。
0954デフォルトの名無しさんNGNG
やっぱあれだな、著作権てやつ。
ほかの分野は特許とかでせいぜい10年しか守られないのに、ソフトは
著作権で50年だか100年だか守られるんだろ?
どおりで進歩のない議論を繰り返すわけだ。
0955デフォルトの名無しさんNGNG
っていうか、gets捨てろよ
なんでgetsつかわなきゃいけないとおもいこんでるんだ?
あと5分以内にfgetsに変えろ!
0956デフォルトの名無しさんNGNG
>>954
いや、このスレを見ているなら、アホナ論争に著作権なんか関係ないことに気づけよ。ぼけ。
0957デフォルトの名無しさんNGNG
%p のほうがいいな ;-)
0958デフォルトの名無しさんNGNG
>>955
べつ思い込んでないと思われ。
0959デフォルトの名無しさんNGNG
>>954
ところでさ、シリコンウエハーが使われだしてから何年になるっけ?
土台になるものが変わらないからって、技術が停滞してることにはならんだろ
0960デフォルトの名無しさんNGNG
>930=936=940=950
話をそらしてないで、いいかげんに>930で何が言いたかったのかハッキリ言えよ。
イライラさせるやつだなお前は。ねらい通りなんだろうが俺は気分が悪い。
0961デフォルトの名無しさんNGNG
> べつ思い込んでないと

あまいね。すっかり思い込んでる。
0962デフォルトの名無しさんNGNG
> 俺は気分が悪い

ようは自我が未成熟な証拠だ。
0963デフォルトの名無しさんNGNG
>962
 おまえはくずだ。もう答えなくて良い。諦めたよ。
0964デフォルトの名無しさんNGNG
fputs使うなら、
getsのままだと、またハマるんだよな。

けっきょくgetsつかってるのがわるい。
0965デフォルトの名無しさんNGNG
>>962
無能な879よりマシに見えるが
0966デフォルトの名無しさんNGNG
> おまえはくずだ。もう答えなくて良い

こわがりすぎー
0967778NGNG
>%s
うわぁぁぁぁぁ(AA略
エラーになってしまいますた。他にも%dとか%pとかも、そのままでは表示されないんですね。
printfのフォーマット指定子とやらのせいですか。

>アドレスを指定すること「しか」できない
printf("わはー");
とかでも、アドレスを指定しているんでしょうか?
この場合、どこかにこの文字列を格納してその先頭アドレスを返しているってことなんですかね。
0968デフォルトの名無しさんNGNG
>>964
消防の作文よりひでーな
0969デフォルトの名無しさんNGNG
さて、そろそろgetsを使わないように直したのができたころかな?
0970デフォルトの名無しさんNGNG
まぁソフト屋は無能な奴がやる職業だし仕方ないか。
0971デフォルトの名無しさんNGNG
getsもscanfも現実のプログラムでは使用しないばかりか、

それら2つの関数を学習する上で、ほかのよりつまずき安い箇所が多い。
しかも、そのつまずいた問題をのりこえる努力をしたとしても、その経験が
あとで生きないものばかりだ。

どうせなら、学習のときに、あれこれ悩んだものがあとあと訳にたつような関数を
使え




ぼけ。

0972デフォルトの名無しさんNGNG
「今日からプログラムを勉強するぞ」スレの
ランボー出現時以来の速さだな。
0973デフォルトの名無しさんNGNG
>>967
char の配列は文字列として扱える。(要終端コード)
で、printf には文字列を表示するための書式指定があるだろ。
あとは、わかるな?
0974デフォルトの名無しさんNGNG
>>970
もうちょっとヒネれ
素材は悪くないが
それじゃ食いつきがいまいちだろ
0975デフォルトの名無しさんNGNG
試しにさ、

char buf[32],*p;
p = gets(buf);
printf(p);

を実行して200文字ぐらい入力してみ。
0976デフォルトの名無しさんNGNG
>>971
>その経験が
>あとで生きないものばかりだ。

プ
0977デフォルトの名無しさんNGNG
> char の配列は文字列として扱える

「扱える」が誤り。
0978デフォルトの名無しさんNGNG
char *p = NULL, *q = NULL;
間違って使わないためにもポインタ型を宣言する際はこんな風に宣言しろぼけ
0979デフォルトの名無しさんNGNG
>>978
いっそのことstaticとか (プ
0980デフォルトの名無しさんNGNG
> いっそのことstaticとか

知ってる単語ならべて知ったかぶりしようとしても無駄。
この話題とまったく関係ない
0981デフォルトの名無しさんNGNG
すくなくとも >>978 とは関係あると思うが。
0982デフォルトの名無しさんNGNG
こんなにレベル低かったっけ?このスレ
0983デフォルトの名無しさんNGNG
>>980
間違って使わないためにもポインタ型を宣言する際はこんな風に宣言しろぼけ
間違って使わないためにもポインタ型を宣言する際はこんな風に宣言しろぼけ
間違って使わないためにもポインタ型を宣言する際はこんな風に宣言しろぼけ
間違って使わないためにもポインタ型を宣言する際はこんな風に宣言しろぼけ
0984デフォルトの名無しさんNGNG
> char *p = NULL, *q = NULL;
> 間違って使わないためにもポインタ型を宣言する際はこんな風に宣言しろぼけ

こういうウソにだまされないように。
どんどんどんどんひどい方向にいくぞ。そういう方針にすると。
そうではなく「ただしい」方向にいけばいいだけ。
0985デフォルトの名無しさんNGNG
>>979
CではNULL == 0って決まりは無いよね
0986デフォルトの名無しさんNGNG
getsは何文字でも入って危険だけど、
fgetsは改行がくっついてくるので
とるのがめんどくさい。
0987デフォルトの名無しさんNGNG
>>981
いや、staticの変数は0で初期化されるが、ポインターが0(NULL)にはならない。
0988デフォルトの名無しさんNGNG
> fgetsは改行がくっついてくるので
> とるのがめんどくさい。

とらなきゃいい
0989デフォルトの名無しさんNGNG
>>985
static char *p, *q;
memset(&p, 0, sizeof p);
if(p == q) puts("sine");

で、うじねが出る保証ないらしいな
0990778NGNG
>>975
うほっ、エラーが出ますた。
やっぱりバッファちゃんが足りないんですかね。

いやー、なんかポインタが結構分かってきた気がします。
やっぱり勝手に思い込んでるだけじゃだめですね。
0991978NGNG
p,qはなにも指していないから使えないって視覚的にわかるだろぼけ
0992デフォルトの名無しさんNGNG
むしろ puts が勝手に改行することのほうが、嫌い。
0993デフォルトの名無しさんNGNG
>>991
そう書かなきゃ視覚的にわかんない無能を恥じろ
0994デフォルトの名無しさんNGNG
>>993

だな。
0995デフォルトの名無しさんNGNG
>>989
static char *p, *q = NULL;
if(p == q) puts("sine");
で比較しろよぼけ

>で、うじねが出る保証ないらしいな
うじねって何だよぼけ
0996デフォルトの名無しさんNGNG
> if(p == q)

空白あけろよ ぼけ

ここあけないやつは、たいがいろくなコード書かない
0997978NGNG
>>993
初心者にはそう書いたほうがわかりやすいと言っているだけだぼけ

0998デフォルトの名無しさんNGNG
1000だぼけ!!
0999デフォルトの名無しさんNGNG
> やっぱり勝手に思い込んでるだけじゃだめですね。

っていうか、ましな本買えよ。
1000デフォルトの名無しさんNGNG
>>1->>999
おまいら全員ぼけ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。