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

C言語なら俺に聞け(入門篇) Part 4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/09(木) 00:31:01
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 3
http://pc8.2ch.net/test/read.cgi/tech/1160682950/

過去スレ
Part 1 http://pc8.2ch.net/test/read.cgi/tech/1146700389/
Part 2 http://pc8.2ch.net/test/read.cgi/tech/1153818463/


関連スレ
くだすれC言語(初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1153542424/

【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://pc8.2ch.net/test/read.cgi/tech/1159613789/
0022デフォルトの名無しさん2006/11/09(木) 17:49:23
>>21
めんどくさいのでおk
0023デフォルトの名無しさん2006/11/09(木) 18:02:37
>>22
どうもです、気にしないことにします
0024デフォルトの名無しさん2006/11/09(木) 18:03:57
>>19
内容が同じでエラーでないならいいんじゃね?
0025デフォルトの名無しさん2006/11/09(木) 18:13:28
>>23
プリプロセッサで検索してくれ
0026デフォルトの名無しさん2006/11/09(木) 20:13:20
>>19
その関数の名前は?
0027192006/11/09(木) 20:55:50
>>24
ですよ…ね?
>>25
必要に応じてコードで使われている標準関数が多く書かれてるヘッダを選べばいいってことでしょうか?
該当の関数それ一つしか使わないならどちらでもいい、のかな
>>26
上で話題になってたsystem関数です
VC++とLSICの両方でINCLUDEフォルダにstdlib.hとprocess.hにありました
0028デフォルトの名無しさん2006/11/09(木) 21:00:21
むしろ自分で直接プロトタイプを書いてもおk
0029デフォルトの名無しさん2006/11/09(木) 21:09:49
main()
{
float r, s;

printf("円の半径を入力 :");
scanf("%f", &r);
s=3.14*r*r;
printf("s=%f\n", s);
}

で警告 W8070 test3.c 10: 関数は値を返すべき(関数 main )
と出るんだがなんで?
0030デフォルトの名無しさん2006/11/09(木) 21:11:43
関数は値を返すべきだから
0031デフォルトの名無しさん2006/11/09(木) 21:12:11
>>29
mainの型は?
0032192006/11/09(木) 21:12:15
>>28
あ、ほんとですね
ヘッダをincludeする代わりに単純にint system(const char *);でも行けました
0033デフォルトの名無しさん2006/11/09(木) 21:12:30
main() → int main(void)
return 0;の追加
0034デフォルトの名無しさん2006/11/09(木) 21:13:26
>>29で普通にできたが
0035デフォルトの名無しさん2006/11/09(木) 21:13:50
はじめたばかりで全然わからんのだが
main()だけじゃだめなのか?
そんで最後の}が10のところなんだ
0036デフォルトの名無しさん2006/11/09(木) 21:14:25
>>29
main()でもtest()でもなんでもいいだが, 明示的にtypeが指定されていない関数は,
暗黙の内にintを返す関数として扱われるから.
0037デフォルトの名無しさん2006/11/09(木) 21:15:57
#include <stdio.h> は入れてるよな?
0038デフォルトの名無しさん2006/11/09(木) 21:17:03
>>37
それはいれている
0039デフォルトの名無しさん2006/11/09(木) 21:17:07
>>37
それが無ければ真っ先に未定義の関数〜みたいなエラーが出ると思うんだが
0040デフォルトの名無しさん2006/11/09(木) 21:17:13
初心者におすすめのHP教えてくれ
0041デフォルトの名無しさん2006/11/09(木) 21:18:33
HP:100くらいないと厳しい
0042デフォルトの名無しさん2006/11/09(木) 21:18:55
>>40
猫
0043デフォルトの名無しさん2006/11/09(木) 21:19:41
本格的にやるならVCとかがないと厳しいのかな
0044デフォルトの名無しさんNGNG?2BP(204)
>>39
#includeなくてもコンパイルできるよ。
0045デフォルトの名無しさん2006/11/09(木) 21:21:45
return 0;
ってなんなんだ?
0046デフォルトの名無しさん2006/11/09(木) 21:22:36
>>44
stdioの中身でもコピーするのか?
0047デフォルトの名無しさん2006/11/09(木) 21:24:58
文字同士が同じかどうかを調べるのはどうすればいいんですか。

size_t len = wcslen((wchar_t*)path)-1;
wchar_t c = path[len];
if( c == L"\\")
swprintf_s( path, wcslen(path)+1, L"%s\\",path);
こうするとなぜかcがInt扱いになってるんですけれども。
0048デフォルトの名無しさんNGNG?2BP(204)
>>46
vc2003だと、これもエラー無しでコンパイル&実行できるけど?

main()
{
    printf("%s\n", "aaaa");
}
0049デフォルトの名無しさん2006/11/09(木) 21:32:13
Cって文字の表示・入力しかできないのか
0050デフォルトの名無しさん2006/11/09(木) 21:32:32
>>35>>40
全く分からん状態なら本の1冊でも買えっつったろヴォケェ
0051デフォルトの名無しさん2006/11/09(木) 21:32:39
>>48
それは知らなかった
でも2005じゃエラー吐くな
0052デフォルトの名無しさん2006/11/09(木) 21:33:14
>>49
それだけじゃないんだぜ
0053デフォルトの名無しさんNGNG?2BP(204)
>>51
Cとしてコンパイルしても?
0054デフォルトの名無しさん2006/11/09(木) 21:34:11
>>45
int main(void)
{
return 0;
}
mainもひとつの関数
関数で値を返すにはreturn が必要
0055デフォルトの名無しさん2006/11/09(木) 21:34:18
>>53
Cとしてコンパイルしたらエラー無くちゃんとできたんだぜ
すげえなww
0056デフォルトの名無しさん2006/11/09(木) 21:34:46
関数で値を返すってどういうことなんだ
0057デフォルトの名無しさん2006/11/09(木) 21:35:49
>>56
関数が値を返すのは関数が値を返すんだろ
0058デフォルトの名無しさん2006/11/09(木) 21:40:18
>>56
どういうことってどういうことなんだ
0059デフォルトの名無しさん2006/11/09(木) 21:49:18
>>56
関数の処理が終了して、呼び出し元に制御が戻ってきたときに、関数の中でreturnしたデータを、呼び出し元で使えるってこと
0060デフォルトの名無しさん2006/11/09(木) 21:57:07
>>56
つまり関数は値を返すってことだ
0061デフォルトの名無しさん2006/11/09(木) 22:05:00
値を返さないと関数とは言えないしな。
0062デフォルトの名無しさん2006/11/09(木) 22:07:01
値を返すファンクションを関数とよぶ。
0063デフォルトの名無しさん2006/11/09(木) 22:10:46
>>62
意味が分からん
頭痛が痛いみたいなもんか?
0064デフォルトの名無しさん2006/11/09(木) 22:11:57
値を返すプロシージャと言いたいのかな
0065デフォルトの名無しさん2006/11/09(木) 22:17:12
値をreturnする関数のファンクションが返すプロシージャが
呼び出し元に制御が戻った。
0066デフォルトの名無しさん2006/11/09(木) 22:17:13
戻り値がない場合はなんと呼ぶべきか
サブルーチン
ファンクション
どっちがいい?
0067デフォルトの名無しさん2006/11/09(木) 22:18:26
>>66
普通に関数でいいだろ
0068デフォルトの名無しさん2006/11/09(木) 22:20:40
関数って何だとかくだらん質問してるやつはケチってないで本買え。
0069デフォルトの名無しさん2006/11/09(木) 22:25:15
カオスになってきたな
0070デフォルトの名無しさん2006/11/09(木) 22:27:11
カボス?
0071デフォルトの名無しさん2006/11/09(木) 23:09:48
カバオ?
0072デフォルトの名無しさん2006/11/09(木) 23:15:06
>>66
ファンクション。
だが「関数」ではない。
0073デフォルトの名無しさん2006/11/09(木) 23:18:12
まーた始まった
0074デフォルトの名無しさん2006/11/09(木) 23:40:56
ゲ製作のHSPスレより来ますた
648 名前は開発中のものです。 sage 2006/11/09(木) 23:24:53 ID:OlISg2Xa | ▲上 | ▼下 | リロード | 10件 | 50件 | 100件 | 300件 | 1-100 | あぼ〜ん
こんなん作りました。ソース付きです。まだ完全ではないです。

http://newsstation.info/up/img/ns15294.zip
MD5:093BFE17333C4CB0C99D36CC674143F1
0075デフォルトの名無しさん2006/11/09(木) 23:47:17
関数ポインタってsugeeeee
ごちゃごちゃと表記する意味がよく判らないが
(typedefはしなくてもいいらしいが、何を何にtypedefしてるのかさっぱり分らない)
とにかく今まで悩んでたあんなことやこんなことに活用できそうな気がしてきた
0076742006/11/09(木) 23:59:14
見事誤爆。駄目だな俺
0077152006/11/10(金) 00:58:01
>>16
ありがとうございました。
とりあえずiconvライブラリ使ってみることにします。
0078デフォルトの名無しさん2006/11/10(金) 09:06:20
>>66
隣の山田さん
0079デフォルトの名無しさん2006/11/10(金) 14:09:20
Cで
コマンドを発行し、その結果を得たいのですが
サンプルはどっか転がってないですか??

たとえばCで
ifconfig
と発行し、その結果を得たい。
0080デフォルトの名無しさん2006/11/10(金) 14:14:17
man popen
0081デフォルトの名無しさん2006/11/10(金) 18:26:53
test
0082デフォルトの名無しさん2006/11/10(金) 18:36:11
直った
0083デフォルトの名無しさん2006/11/10(金) 18:37:57
なにが?
0084デフォルトの名無しさん2006/11/10(金) 18:38:08
ちょっと落ちてた
0085デフォルトの名無しさん2006/11/10(金) 18:41:22
やっぱそうだったんだ
リロードしてもエラーだからおかしいと思った
Linux板クノッピスレも落ちてた
0086デフォルトの名無しさん2006/11/10(金) 20:16:56
>>49
C言語に文字の入出力機能など御座いません。
それらは総てライブラリの仕事です。
0087デフォルトの名無しさん2006/11/10(金) 20:32:50
>>86
入門者未満はこっちへどうぞ。
ttp://pc8.2ch.net/test/read.cgi/tech/1158275665/
0088デフォルトの名無しさん2006/11/10(金) 20:44:25
ライブラリも含めてC(の処理系)。
ライブラリが無ければ、それは単なるCのコンパイラというだけ。
0089デフォルトの名無しさん2006/11/11(土) 12:28:35
>>86
正しい。

>>87-88
似非回答者はこちらへどうぞ。
ttp://pc8.2ch.net/test/read.cgi/tech/1158275665/
0090デフォルトの名無しさんNGNG?2BP(204)
>>86
こういうことを言ってみたい年頃なんだよな。
0091デフォルトの名無しさん2006/11/11(土) 13:04:51
でもまあ思い違いしてる人も多いしそれを正してやるのはよいことじゃない?
0092デフォルトの名無しさんNGNG?2BP(204)
昔、Cが流行になったろにpascalやらfortranとの比較で、IOがシンタックスに組み込まれてるか、
ライブラリになってるかとかって話題があって、そういうことを言ってるんだろうけど、
「入出力がC言語にない」って言い方は正しいのか?

0093デフォルトの名無しさん2006/11/11(土) 13:33:18
ヒント:「文字の」
0094デフォルトの名無しさん2006/11/11(土) 13:33:28
引数=入力
戻り値=出力
0095デフォルトの名無しさん2006/11/11(土) 13:40:06
>>93
そういうレスは揚げ足取られるだけだお
0096デフォルトの名無しさん2006/11/11(土) 13:57:13
VRAMいじれるOSなら可能だろ。
0097デフォルトの名無しさん2006/11/11(土) 14:04:29
まあ組込なら常識なんだがね
0098デフォルトの名無しさん2006/11/11(土) 14:14:56
bccでWindowsXP上でconsoleアプリ(単純なスクリーンエディタ)
をつくってるんですが、
画面のスクロールをconio.hのputchで全行書き直し,
movetextとかins/dellineとかを試したのですが
更新時間がとても遅く(0.3sec/line程度)なってしまいました。

VRAMをいじらずに標準(的)なライブラリで
うまく実装する方法を教えてください。
0099デフォルトの名無しさん2006/11/11(土) 14:31:28
ttp://www.vector.co.jp/soft/dl/x68/prog/se014962.html
これ見て標準関数の勉強しようかと思ってるんですが、標準関数の中のアルゴリズムってどれも大体は同じなんでしょうか?
0100デフォルトの名無しさん2006/11/11(土) 14:47:38
アルゴリズムが同じなら関数は一個で済む罠
0101デフォルトの名無しさん2006/11/11(土) 14:56:05
たしかに。
0102デフォルトの名無しさん2006/11/11(土) 15:11:57
分かり難くてすみません、どれもというのは、
どのコンパイラに付属する標準関数のものでもって意味です…
010399=1012006/11/11(土) 15:15:03
どのコンパイラに付属する(同じ名前の)標準関数、でした
0104デフォルトの名無しさん2006/11/11(土) 15:16:02
違うよ
基本的にアセンブラで書かれてるはずだから
CPUや処理系に依存
0105デフォルトの名無しさん2006/11/11(土) 15:18:37
ああ、アルゴリズムか。
開発者に聞かなきゃわからないけど
アルゴリズムは大体似通ったものにはなるんじゃないかな
0106デフォルトの名無しさん2006/11/11(土) 15:19:32
プ
0107デフォルトの名無しさん2006/11/11(土) 15:23:33
笑わないでくださいよ〜いっしょけんめい答えたんだ辛さ〜(><)
0108992006/11/11(土) 15:24:09
>>104-105
ありがとうございます、アセンブラなんですね
0109デフォルトの名無しさん2006/11/11(土) 15:27:05
笑われたから違うかもです(><)
0110デフォルトの名無しさん2006/11/11(土) 15:29:28
違うよ。
0111デフォルトの名無しさん2006/11/11(土) 15:32:31
正しい答えを教えてあげてください(><)
0112こんなもんかな2006/11/11(土) 15:38:34
アルゴリズムは大して変わらないだろうが、実装レベルではCPUと環境によって様様だろう。
0113992006/11/11(土) 15:39:09
あ、いえ、105の方がそうらしいならそっちは今は気にしてません
開発者に聞かなきゃ分からないようなこと聞いてすみません
0114デフォルトの名無しさん2006/11/11(土) 15:41:02
>>112
>>104-105
0115デフォルトの名無しさん2006/11/11(土) 15:46:36
ちょっとまて、コンパイラ付属の標準関数がアセンブリで書かれてるわけなくね?
コンパイルオプションでアーキテクチャ指定されたときどうすんだよ。
0116デフォルトの名無しさん2006/11/11(土) 15:47:27
すまん Linux(RHEL AS4)の
rawデバイスに対してdatファイルを
writeして、readでInvalid Argument (errno=22)
エラーになるんだがこれって本当に読み出し
出来てないのかな?

rawデバだから読み出し出来てないってOSが
認識してるだけだと思ったんだけど・・・

どうやったら正常にreadさせられるのか
どなたか教えてくださいませ
0117デフォルトの名無しさん2006/11/11(土) 15:47:41
>>112
malloc()のような低水準の処理はアセンブラか機械語、
でも機械語はあり得ないからやっぱりアセンブラだと思うんですけど(><)
0118デフォルトの名無しさん2006/11/11(土) 15:48:23
>>115-116
難しいことはわかりません(><)
0119デフォルトの名無しさん2006/11/11(土) 15:49:14
malloc自体にはアセムは使ってないと思うぞ。
0120デフォルトの名無しさん2006/11/11(土) 15:49:43
単純なメモリ操作だからかな
0121デフォルトの名無しさん2006/11/11(土) 16:11:04
ある本のamazonのコメントで、
>ブロックと関数とループを混同していることなどは看過できない
とあるのですが、これは、どういう意味でしょうか?
こういう批判のある本はやめといたほうがいいのですかね?
■ このスレッドは過去ログ倉庫に格納されています