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

C言語なら、俺に聞け! <19>

■ このスレッドは過去ログ倉庫に格納されています
0001ともっちNGNG
C言語質問すれ

・comp.lang.c FAQ
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html

・前スレ
<18> http://pc.2ch.net/test/read.cgi/tech/1020260813/l50
リンクは>>2-3
0232デフォルトの名無しさんNGNG
>>228
40点
0233デフォルトの名無しさんNGNG
>>229
IDEからわざわざコマンドで実行させているんですか?まあいいけど。
一度、test1.cとincre1.cを別々にコンパイルして、エラーが出ないか
どうか確かめた方がいいですね。
多分incre.cにはmain()が無いというリンカエラーが出ると思うけど、
それは無視して下さい。
0234デフォルトの名無しさんNGNG
>>228
配列を逆さに読む意味は?
そもそも何がしたいんだ?
0235デフォルトの名無しさんNGNG
>>229
俺の所には古いBorland-C++5.02Jがあるけど、これから複数のプログラムを
コンパイルするには、ファイル→新規作成→プロジェクトでやると簡単だよ。
Turbo-C++も多分同じでしょう。
0236デフォルトの名無しさんNGNG
>>185にて
文字列を読み込んで逆から表示 例 iptep==>petpi
とかいてあるぞ。>>234よ

まぁ本来はもちっと難しい方法で解決するんだろうけど、
!=をつかってスリムにしない程の初心者なので良いんではないだろうか。
0237デフォルトの名無しさんNGNG
>>236
あれだと妙な空白が初めに出ない?
0238デフォルトの名無しさんNGNG
>>237
if(moji[i]==NULL)
{
}
だから出ないんじゃない?
0239デフォルトの名無しさんNGNG
>>185

宿題スレからコピペ

#include <stdio.h>

rev_put(ch)
{
 if (ch != '\n') {
  rev_put(getchar());
  putchar(ch);
 }
}

main()
{
 rev_put(getchar());
}
0240初心者NGNG
40点ですか。100点の解答は
どんな風にやるんですか?<232
ヒントをオクレ
0241デフォルトの名無しさんNGNG
for(i=99;0<=i;i--)
{
if(moji[i]==NULL)
{
}
else
{
printf("%c",moji[i]);
}
}

ここを

for(i=99;0<=i;i--)
{
if(moji[i]!=NULL){
printf("%c",moji[i]);
}
}

とするのはどうかな。
0242デフォルトの名無しさんNGNG
>>240
>>239じゃだめなんか?
0243デフォルトの名無しさんNGNG
>>242
無駄に再帰使ってるね。。。
024479NGNG
>>231
やっとのことで成功しました!
…ここまできたので、ついでといっては何ですが、
[turboc.cfg or tcc.cfg]
-IC:\TCW5\INCLUDE
-LC:\TCW5\LIB

[tlink.cfg]
-LC:\TCW5\LIB

IC,LCなどの意味も教えてくれないでしょうか?

この分からず屋にも親切に教えてくださったみなさん、
ありがとうございました!
これで、ますますCの勉強がやりやすくなります!
0245デフォルトの名無しさんNGNG
>>244
おめっと。
でも分からず屋ってこういうときに使う言葉か?(汗
0246デフォルトの名無しさんNGNG
>>231
ICじゃなくて
-Iがインクルードパス
-Lがライブラリのパス
C:\TC5W〜がディレクトリ
-Iと-Lでディレクトリを指定している。

しかし、水を差すようで悪いが、
bcc32を使った方がいいと思う
0247デフォルトの名無しさんNGNG
>>243
入力される文字列の長さが100文字限定というのはアレだからな
0248デフォルトの名無しさんNGNG
TurboC++ for Windows 5 って、Windows専用コンパイラじゃなかったっけ?
コマンドラインツールって含まれてるの?
コンソールアプリもEasyWindow(s?)でウインドウアプリにしちゃった気が・・。

エラーってさ、、、
 「コマンドまたはファイル名が違います」
じゃないよね?
024979NGNG
>>245
あっ、使い方間違ってますね(汗

>>246
ありがとうございます!
また質問で悪いのですが、bcc32とは何でしょうか?
0250デフォルトの名無しさんNGNG

#include <stdio.h>

int main(void)
{
char ch = getchar();
if ( ch!='\n' ) main();
putchar( ch );
}
0251デフォルトの名無しさんNGNG
>>250
returnがありませんw。
0252デフォルトの名無しさんNGNG
ワラタ
0253デフォルトの名無しさんNGNG
はっきり言ってなんかのコンパイラの設定聞いてる奴がうざい。
0254デフォルトの名無しさんNGNG
>>249
http://www.borland.co.jp/cppbuilder/freecompiler/
0255デフォルトの名無しさんNGNG
>>253
湧くな。
0256デフォルトの名無しさんNGNG
>>251
returnいるのか?
他のやつも省略してるし、コンパイラは警告もエラーもはかないし。
まぁ、戻り値無視してるからなんでも適当に付け足せば。
0257デフォルトの名無しさんNGNG
>>249
1のリンクくらいは見ようよ
0258デフォルトの名無しさんNGNG
>>256
main()
ならreturn省略してもいいが(よくないけど)
intと書いたのならきっちり値を変えそうよ
025979NGNG
>>253
すいませんでした。これからは自粛します…。

>>254
早速DLしてます!これからどっちが使いやすいか試します!
0260デフォルトの名無しさんNGNG
>>256
関数の型がintだからいるだろ。
0261デフォルトの名無しさんNGNG
>>258,260
省略時もintだろ?
0262デフォルトの名無しさんNGNG
>>258
int main()のreturnを省略していいのはC++だよ。
0263デフォルトの名無しさんNGNG
>>79がまず覚えるべきなのはgoogleの使い方だとオモフ。
0264デフォルトの名無しさんNGNG
>>259
多分今日味わった苦労が、BCC32のセットアップの時に役立つはず。
0265デフォルトの名無しさんNGNG
>>262
ん〜〜VC++でCとしてコンパイルしてるが、
まぁVC++の警告の出し漏れか。
0266デフォルトの名無しさんNGNG
>>259
おめでとさんついでに、もう一つ書いておいてあげます。
BCC32にはこれをペアで使うと楽だよ。
http://hp.vector.co.jp/authors/VA017148/pages/cpad.html
0267デフォルトの名無しさんNGNG
>>261
だから、よくないけどって書いてあるだろ。
心情的にはわかるってことだ
0268初心者NGNG
185ですけど
241さんのやだと見た人がわかりずらいので
やめました。はじめはそうしてたのですが・・

250
これは僕の実力をはるかに超えた解答でした。
1つの問題で多くの解答が出ることにプログラミング
に楽しさがあるのではと実感しています
0269デフォルトの名無しさんNGNG
>265
VC++でCとしてコンパイルしたら、returnがなくても警告でないんだ。
0270デフォルトの名無しさんNGNG
>>269
どうやらmain関数だけはそうらしい。
0271デフォルトの名無しさんNGNG
>>270
C++みたいですね。でもC++としてコンパイルすると、return 0;がないと
警告出ません?
0272デフォルトの名無しさんNGNG
241のも、NULLと'\0'を混同している点で、減点は必至。
0273デフォルトの名無しさんNGNG
>>272
どっちも0じゃん!
と、いつぞやの紛争をぶり返す俺。
0274デフォルトの名無しさんNGNG
>>271
C++でもmainだけは警告でなかった。
他の関数ではエラーになる。(VC.NET)
0275デフォルトの名無しさんNGNG
>>274
cppなら出るぞ(VC6SP4)。
0276デフォルトの名無しさんNGNG
なんだ、その、つまり、荒れてるのか?
0277デフォルトの名無しさんNGNG
>>274
C++で出ないのは標準だからね。Cででないのは仕方ないかな。規格書の
中にreturn省略時のmainが何を返すかまでは書いてないから。
0278デフォルトの名無しさんNGNG
main関数までプロトタイプ宣言している奴はいる?
0279デフォルトの名無しさんNGNG
いない
0280デフォルトの名無しさんNGNG
>>278
C始めて1ヶ月くらいまでしてた(w
0281デフォルトの名無しさんNGNG
>>273
NULLは ((void*)0) と定義されてあることもあるという
どうしようもないツッコミを入れてみる。
0282デフォルトの名無しさんNGNG
>>281
C++じゃNULLは0だよ

>>xxx
ここはCスレだ
0283 NGNG
たとえ動作上何の問題がないとしても
NULLマクロをヌルポインタ以外の意味で使うのは恥かしい
0284デフォルトの名無しさんNGNG
>>282
ここがC言語スレだと分かってるなら
な
ぜ
C++の話を無意味に持ち出す?
0285デフォルトの名無しさんNGNG
発展前に釘を刺しただけだと思われ
0286デフォルトの名無しさんNGNG
>>278
前橋和弥
0287saNGNG
初心者です。
テキストファイルをオープンして、そのテキストファイルに何行のデータがあるか
知りたいんですが、どうすればいいんでしょう?
0288デフォルトの名無しさんNGNG
wc -l
0289デフォルトの名無しさんNGNG
改行の数を数える。
0290デフォルトの名無しさんNGNG
>>287
fgetsでループしる。
029191NGNG
>>92
>CRTのソースのfopen関係のあたりでENOMEM検索してみれば
CRTってなんですか?
0292デフォルトの名無しさんNGNG
初心者なんだけどぶっちゃけ

#include< iostream.h>
のcout<<
タイプか

stdio.h
printf"
のタイプあどっちがいいの?
どっちが初心者むきで、どっちが一般的?
0293デフォルトの名無しさんNGNG
ぶっちゃけ、ここはCスレ
マジレスするとケースバイケース
0294デフォルトの名無しさんNGNG
>>292
ぶっちゃけた話、両方をやっておくべき。
0295デフォルトの名無しさんNGNG
>>291

 ディスプレイとかモニタとか画面とかとも言うね。
 人によっては、TVとか言う人も(笑)。
0296デフォルトの名無しさんNGNG
>>292
 Cでは、前者は一切使わない。
 無理して頑張って努力すれば出来ない事ない鴨しれないけど、ワシは知らん。
0297sageNGNG
>>295
ってことは、ディスプレイが原因なのか?
0298デフォルトの名無しさんNGNG
>>292
前者はほとんど使ったこと無い。
C++のオーバーロードの(悪い)例程度に見てる。
0299299NGNG
int c;
scanf("%d",&c);
これで間違って文字を入力された場合の対処法はどうすればよいのでしょうか?

自分でも考えたんですが
chara a;
int c;
scanf("c",&a);
c = atoi(a);
という方法もやってみたんですが
数字と文字を入力された場合(12yとか)は、駄目なんですよね。
0300デフォルトの名無しさんNGNG
>>299 scanf()で%sを使ってatoi()

scanf()で%dとか使うのは入力されるデータにまず間違いがない
(ファイルからの入力とか……おっとこれはfscanf()か)とき
だけにしておいたほうが良い

>>291 C RunTimeルーチンのこと? crt0.sとかをGoogleで検索.
0301デフォルトの名無しさんNGNG
scanf を使わない。
0302デフォルトの名無しさんNGNG
誤った入力に対処できないから scanf() は使うな、なんて言われて
何も考えずに使わないようにしていました。 fgets() と sscanf()
を組み合わせて使う方法は今でも常道なんでしょうか。少し脱線すまそ。
0303デフォルトの名無しさんNGNG
>>300
atoi()はatoi("a")とatoi("0")も0を返すので
0が入力されたのか文字を入力されたのかの区別が付かない


  
0304デフォルトの名無しさんNGNG
>>303
fgetsとstrtodでどうでしょう?
0305デフォルトの名無しさんNGNG
>>304
駄目、一見よさそうに見えるが指数形式も扱えてしまう為、
strtod("1e", &p);が正常終了する。

isdigitで1文字づつチェックするのが一番安全
0306デフォルトの名無しさんNGNG
>>305
fgetsとstrtolでどうでしょう?
0307カス野郎NGNG
>>292
だけど、秋に基本情報技術者の試験控えてるんですけど
どちらにしろ、たしか基本情報ではcout<<タイプはないよね。
printfの方だよね。

さらにVC++やってても変数とか出すときにsprintf使うけど
coutなんてまったく使わないし、printfタイプの方がいいという
ことでいい?みんなこっちつかってるよね。
0308デフォルトの名無しさんNGNG
>>307
「cout<<」を使えるのはC++だからね…
0309デフォルトの名無しさんNGNG
>>307
stringstreamは便利だyo!
0310デフォルトの名無しさんNGNG

cout<<の存在意義って何?
0311デフォルトの名無しさんNGNG
==で文字列が同じかどうか判断できたり、+で文字列を連結できるC++はまじですごい・・・・・
というか文字列型自体すごいのだが。
0312デフォルトの名無しさんNGNG
>>310
coutっちゅーか、streamに対する<<の意義は:
型に対する処理の選択が実行時ではなくコンパイル時に行われる。
operator <<(stream&, 〜)を実装しさえすれば後からどんなデータでも統一的に追加対応できる。
%dなどの書式文字についていちいち覚えなくても、<<で出るとだけ覚えれば使える。

しかし、こと書式の詳細指定に関しては冗長かつ結局実行時ステートなのがアレだ。
0313デフォルトの名無しさんNGNG
>>312
C++全然知らないんだけど、cout <<の<<はビットシフトの<<じゃないよね?
0314デフォルトの名無しさんNGNG
>>313
<<演算子はiostream等のクラスでオーバーロードされて、まるで出力用に
作られたかのように動きます。よくできすぎとるわ。
0315デフォルトの名無しさんNGNG
>>314
臨機応変に変えるんだ!?
すごいね。
でもコンパイラを作るのが大変そう・・・
0316デフォルトの名無しさんNGNG
>>311
それは言語の機能として型に対する演算子の処理を自分で作れるように
なっていて、ライブラリがそれを利用して作られているからということ。
文字列型というものはC++の言語そのものにあるんじゃなくてライブラリの
中にある。
0317デフォルトの名無しさんNGNG
>>316
そそ。なるべく本体は小さく保とうという精神がC++になっても受け継がれている。
しかし、内部が小さくてもC++では外部がばかでかくなり、今まで一番言語仕様
が大きいと言われていたAdaをもしのいでしまった。
0318デフォルトの名無しさんNGNG
>>315
その結果として、現在(多分)標準C++準拠と銘打っていても実際はbuggyな
処理系だらけです。
0319デフォルトの名無しさんNGNG
>なるべく本体は小さく保とうという精神がC++になっても受け継がれている。

うそつけ
あのクソ汚い文法のどこを見てそんなことがいえるんだ
0320デフォルトの名無しさんNGNG
>>319
出たな!「C++の文法は汚い」厨!
0321デフォルトの名無しさんNGNG
「汚い」は「小さい」の反意語なのか?
0322C++房NGNG
C++の文法は世界一キレイです。
0323デフォルトの名無しさんNGNG
諸君、ここはCスレだということを忘れていないかい?
0324デフォルトの名無しさんNGNG
>>323
CとC++が渾然一体となったスレもこうなると欲しいな。両者を切り離して
考えないスレを。
0325デフォルトの名無しさんNGNG
それはC++スレじゃダメなのかい?
0326デフォルトの名無しさんNGNG
>>325
C++スレでCの話するとスレ違いだと叩かれる。
0327デフォルトの名無しさんNGNG
ad-hoc polymorphismのどこがきれいなんだ?
ただad hocなだけなのに。
0328デフォルトの名無しさんNGNG
>>324
必要性を感じた人間が自ら実行するべき。

Cしかやらない私にはC++の話は邪魔なだけです。
0329デフォルトの名無しさんNGNG
>>328
了解。しばらく様子を見ます。
0330デフォルトの名無しさんNGNG
>>324
必要性を感じた人間が自ら実行するべき。

Cしかできない私にはC++の話は理解できなくていらいらするだけです。
0331デフォルトの名無しさんNGNG
今マウスの座標の取り方を GetCursorPos(&MousePos);
としているのですが,これではウィンドウ上の座標ではなく,
ディスプレイの画面上の座標を取るらしく困っています。
ウィンドウ上の座標をどうやったらえることができるのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています