C言語なら俺に聞け 140 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8c-8ulf)
垢版 |
2017/05/11(木) 22:20:03.99ID:cn414UR90
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


http://echo.2ch.net/test/read.cgi/tech/1487757355/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/06/09(金) 23:48:48.50ID:IBAe8Zr/r
まだ一冊も買っていませんが>>397,402両氏に感謝
坂井氏の記事は判りやすくて良いですね。別件でググっていたらITmedia系列で連載しているのを発見しまして
今読んでいるところですけど大変為になります
ttp://www.itmedia.co.jp/author/174171/
2017/06/10(土) 01:59:22.10ID:zs39aG6C0
QZ怒りの感謝芸
2017/06/10(土) 08:08:29.71ID:pb8IN1oh0
>>430
巣から出てくるな
2017/06/10(土) 19:50:14.54ID:SZlbpMsi0
なんか禁止文字があるようなので画像で質問します

http://i.imgur.com/ZotbBm5.jpg
2017/06/10(土) 20:03:35.22ID:WN3QcUIY0
>>432
同一IPアドレスで複数のホストを割り当てているのだろう
だから、IPアドレスで要求しても答えられないことになる

https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%83%9B%E3%82%B9%E3%83%88
2017/06/10(土) 20:24:27.55ID:WN3QcUIY0
>>432
バーチャルホストへの対応は http 1.1からなので、リクエストヘッダーを作成し
その中にどのホストへの要求かをサーバーに伝える必要があります。
このページを参考にしてみて。

http://tomosoft.jp/design/?p=3636

サンプルソースはローカルネットワークでやっているので、
変数 httphost にはIPアドレスが指定していますが、
ここに求めるホスト名を指定すれば良いはずです。
2017/06/10(土) 20:26:42.82ID:ya4F889pd
ありがとうございます
ちょっと出てしまったので家に戻ったら
もらった情報を元に解決頑張ってみます
2017/06/10(土) 20:45:37.76ID:gQtHq0zi0
ありがとうございますwww
QZの自演感謝芸は本当にわかりやすい
2017/06/10(土) 23:40:32.38ID:IgPZpOJ50
誰が誰を煽ってるのかは分かりませんが
リクエストヘッダの記述をHTTP1.1にして
1.1の必須ヘッダのHostを設定して試してみたら
無事動作しました
ありがとうございました
2017/06/11(日) 01:17:53.70ID:3YYJxHfi0
おいQZ自演範囲拡大かよ気持ち悪い
2017/06/11(日) 09:55:13.67ID:IXRoGBtM0
>>438
巣から出てくるな
2017/06/11(日) 11:01:28.44ID:jDqQVEke0
C99の識別子について質問です。
構造体のメンバ命を「アンダーバー + 小文字アルファベット」で始まるものにするのは
仕様上、予約語と名前衝突しないことになっていますか?

「アンダーバー + 大文字アルファベット」で始まる識別子は予約されてるという記事がいくつかありましたが、小文字の場合に言及している情報は見つけられませんでした。
2017/06/11(日) 11:12:15.08ID:8e5gqfxU0
>グローバル スコープを持ち、_ で始まる名前
>_ で始まり、その次が大文字の名前
>__ で始まる名前
この3つだけなんで、アンダースコア+小文字かつメンバ名なら大丈夫
まぁ個人的には2連アンダースコアと先頭アンダースコアは避けるけど
2017/06/11(日) 11:58:31.34ID:jDqQVEke0
>>441
素早い回答有難うございます。
安心しました。

でも、ご指摘の通り使用は最小限にとどめたいと思います。
ありがとうございました
2017/06/11(日) 15:12:12.69ID:3YYJxHfi0
QZいかりの焦り
2017/06/12(月) 01:04:21.12ID:yvrc7Cbj0
QZはム板から消えろ
2017/06/12(月) 01:07:04.82ID:yvrc7Cbj0
でも、ご指摘の通り使用は最小限にとどめたいと思います。www
QZ落第のときのセリフがこれ
2017/06/12(月) 11:24:14.92ID:tv4YfZMV0
ワッチョイとD9zBでNGすりゃいいのか?
447デフォルトの名無しさん (ワッチョイ 85aa-vEzb)
垢版 |
2017/06/12(月) 11:46:58.72ID:gcWGi0lu0
QZをNGにすりゃいいんじゃない?
2017/06/12(月) 18:10:03.52ID:yvrc7Cbj0
QZ怒りのNG推奨
2017/06/12(月) 18:11:22.02ID:yvrc7Cbj0
おいQZ自演オナニーに飽き足らず
他スレで無知披露かよ
お前のような永久無職が議論できるような場所じゃないから
2017/06/12(月) 18:54:22.58ID:3CfNjtZc0
>>449
おいそれどこだよ?
451デフォルトの名無しさん (ワッチョイ e511-yTT2)
垢版 |
2017/06/12(月) 19:34:00.50ID:5L3xq22d0
%%%MC+7,8%%%

}

000-"M","LES","TUV=0.13325&/0\7&%&",

001-"23","1","0","2","7.14",[\b%7/1444*%812%2.3%7&6111\end\\]{%3%12%\br
2017/06/13(火) 17:20:53.30ID:kTA8yB7D0
よくいろいろなホームページにinlineは付けなくてもコンパイラーが最適化で自動で決めるので
付けなくていいと見かけるけれど、重要なのはinlineを書くかどうかじゃなくて
定義をヘッダーファイルにかいてinlineに出来るかソースファイルに書いて
出来ないようにするのかってことでしょ。
inlineが出来るようにするのか出来ないようにするのかの話を
inlineを書くか書かないかの話にすり替えている汚いやり方だと思いませんか?
2017/06/13(火) 18:10:46.25ID:TlpR08p20
>>452
翻訳単位という括りで見たらヘッダーファイルとかの区別は無意味だから
あなたの意見には同意しかねる
2017/06/13(火) 19:22:36.04ID:7vUqF+ijM
register 変数だって、本当にレジスタに割り当ててるか怪しいもんだ。
2017/06/13(火) 19:32:28.37ID:fqqPhx3LH
当たり前の話であって怪しくもなんともないんだが
456デフォルトの名無しさん (スププ Sd43-BT4T)
垢版 |
2017/06/13(火) 19:45:37.31ID:+kV5cJp9d
Cって関数オブジェクト的な動作ってできるっけ?
2017/06/13(火) 20:05:20.23ID:co8+PZUE0
第一級関数
https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E9%96%A2%E6%95%B0

>CやC++、Pascalなどのプログラミング言語は関数ポインタをサポートしており、データ構造に含めたり他の関数に引数として渡したりすることができる。
>しかし、それらの関数は一般にリフレクションなしではプログラムの実行時に動的に生成することができないため、第一級関数をサポートしているとは見なされていない。
2017/06/13(火) 20:37:39.64ID:siDT5/O8M
>>454
今時ヒントにもしてないだろ
459デフォルトの名無しさん (ワンミングク MMa3-vEzb)
垢版 |
2017/06/13(火) 22:14:31.00ID:fqqtkiftM
registerとか、メジャーなコンパイラで同じオプティマイザーを使用するC++では無くなっちゃったしな。
460デフォルトの名無しさん (スププ Sd43-BT4T)
垢版 |
2017/06/13(火) 22:26:08.47ID:+kV5cJp9d
>>457
ないってことか。ありがとうございます
2017/06/13(火) 23:50:32.05ID:Vyd7kh0w0
-O3つければ関係ナッシング
-O2でもいいかも
462デフォルトの名無しさん (ワッチョイ 9511-LnFi)
垢版 |
2017/06/14(水) 02:09:06.53ID:cctIdNvV0
http://i.imgur.com/b3A3YWl.jpg
この(お)がよく分からん
最初の段階でi=j=0だからswapさせても意味なくね?
だったら(お)でiとjずらすのか?
とも思ったが反応なし
教えてくれると嬉しい
2017/06/14(水) 02:17:07.73ID:cctIdNvV0
自己解決した
2017/06/14(水) 10:41:57.78ID:xDw396a4d
出力変換指定子について教えてください

printf("16進のffを10進に変換すると%dです\n", 0xff);

実行結果→16進のffを10進に変換すると15です

%dなどの出力変換指定子というのは、数値を文字列に変換して出力している、という理解でよろしいのでしょうか?
それとも数値を数値のまま、文字列の間に挟み込んで出力してくれている、という理解の方が合っていますでしょうか?
2017/06/14(水) 11:28:08.77ID:cB3KRwiX0
前者
2017/06/14(水) 11:36:10.60ID:H04nBmO80
http://linuxjm.osdn.jp/html/LDP_man-pages/man3/printf.3.html
%dは文字列に変換する
15じゃなく255になるかと
数値のままってのがよくわからんけど
printf( "%c", 0x41);
ならほとんどの処理系で大文字Aが表示される
%cでcharのビット数より上位のビットが
立っていた場合の挙動は知らん
2017/06/14(水) 11:37:07.78ID:H04nBmO80
失礼しますた
2017/06/14(水) 11:38:27.87ID:iafztWleH
>>464
前者。文字列にしないと文字として表示できない。
ちなみに15じゃないけどな
2017/06/14(水) 12:41:52.28ID:Xahf6/YZM
>>468
補足すると、0xffは引数にした場合 0xffffffff に拡張される
(32bit機の場合)
2017/06/14(水) 12:49:16.05ID:jUBU+j0AM
>>469
255 じゃなくて、4294967295 になるってこと?
変なの。
2017/06/14(水) 12:57:53.53ID:Xahf6/YZM
>>470
符合が付いているから255じゃない。で466のレスに繋がる(^_^)ノ
2017/06/14(水) 12:58:00.19ID:cB3KRwiX0
符号付で -1 とみなし、そこから符号を維持したまま拡張して引数に詰む
引数を引っ張り出して 符号付評価で値を文字化の結果 "-1 "
(char 型変数に 0xff を入れてて、それを printf に渡したケース)


ところでリテラルの 0xff が符号付か否かは何か規定あったっけ?
2017/06/14(水) 13:30:59.38ID:jUBU+j0AM
>>471
どこに符号が付いてるの?
(符合と符号は違うの?)
255 にしかならないけど。

>>472
char が符号付きかどうかは処理系依存なはず。
2017/06/14(水) 13:41:28.06ID:cB3KRwiX0
>>473
リテラル文字列中の文字が signed か unsigned か とは別だっけか?
あんまり出くわさないのでルーズになってるわ・・・
2017/06/14(水) 18:52:36.33ID:ROBFB8K40
0xffの型はintだよ
2017/06/14(水) 18:54:17.69ID:ROBFB8K40
int a = 255;
の時に、aが-1になったら不便でしょ?
2017/06/14(水) 18:56:15.18ID:ROBFB8K40
int a = (signed char)255;
の場合は-1になる
2017/06/14(水) 19:07:02.19ID:wXdIbuq80
比較演算子の左辺 右辺 でやらかしそうだ・・・
2017/06/14(水) 19:25:17.22ID:jUBU+j0AM
>>471
とりあえず >>469 を説明して!
2017/06/14(水) 19:56:00.75ID:7MR8m8vU0
>>464
本当に試したのか?
https://ideone.com/yMxt39

>>469
本当かね?int なんだけれども

>>472
リテラルは int なんじゃないかな?で int は別に符号拡張しない

>>479
>>469 は誤り
2017/06/14(水) 21:51:54.69ID:ROBFB8K40
リテラルが無条件でintなわけじゃない

intで表現出来る範囲はint
intを越えた場合には基本的には表現出来る最小の型になる
u, l, ul, ll, ullなどのサフィックスで明示的に変更も可能
サフィックスで作れない型はキャストして作る
2017/06/15(木) 03:30:56.19ID:foJhra+T0
数値リテラルはこの辺参照
www.bohyoh.com/CandCPP/FAQ/FAQ00074.html
あと、-100とかは数値リテラル100と単項-となることに注意
2017/06/15(木) 09:30:50.85ID:dX1k+/c2M
>>482
表が分かりにくすぎる。
2017/06/16(金) 13:48:41.24ID:6HI1EFfUd
>>465>>466>>467>>468>>480をはじめとした皆様
ご解答していただきありがとうございました(_ _)

お礼遅くなりすみませんでした
2017/06/16(金) 13:50:22.93ID:6HI1EFfUd
>>481
ulって書く人とluって書く人がいますがどちらが正しいのですか?
2017/06/16(金) 14:04:02.57ID:ZbWJ164Ea
どちらも正しいです
2017/06/16(金) 14:10:39.42ID:5SN0StmUd
>>486
ありがとうございます
2017/06/16(金) 16:33:55.37ID:lEbqssrF0
QZ潜伏スレッド
2017/06/16(金) 17:03:31.61ID:15uCJDWTM
switch(c)
case no:


これで、ケースnoに入った際に、もう一度switch文を繰り返す方法はありませんか?
goto文使わないと無理ですかね?
2017/06/16(金) 17:06:02.86ID:qjls6Rocd
>>489
do {
switch(c) {
case no: continue;
...
} while (0);
2017/06/16(金) 18:55:58.83ID:OzysmJdyM
>>490
ありがとうございます

case yes:
ほにゃらら
case no:
break;


yesの場合もbreakしたいのですが、noに流れさせてbreakするのと、yeaにbreakも書くのとどちらがいいんですかね?
2017/06/16(金) 19:13:28.04ID:exN5gWxV0
お好きなように

caseはbreakする事がほとんどなので、コードを読むときにbreakがあると勘違いしないように、ほにゃららの後とcase no:の後の両方にコメントを忘れずに
2017/06/16(金) 22:34:26.38ID:jRm/huKjd
変換仕様とデータ型との関係について質問させてください


int a;
scanf("%c", &a);
printf("%c\n", a );

考え方として、intと%cのどちらが優先されるでしょうか?
2017/06/16(金) 22:41:33.61ID:qjls6Rocd
>>493
> scanf("%c", &a);
これは入力された文字の文字コードをaに入れる。

> printf("%c\n", a );
これは、aが表す文字コードの文字を出力する。
2017/06/16(金) 23:09:12.38ID:exN5gWxV0
>>493
scanfの方は、&a を charへのポインタとして処理をする
結果は環境依存

printfも基本的には書式と引数が合っている必要があるが、intより小さい引数は全ていったんintに変換されてからコールされるので、この場合は問題なし
2017/06/16(金) 23:37:22.59ID:jRm/huKjd
>>494
>>495
すごい勉強になります
詳しい興味深く書いていただきありがとうございます
2017/06/17(土) 03:37:57.37ID:O3DVEcmT0
さっきからここQZ自演だらけだぞ
2017/06/17(土) 05:36:36.60ID:4Gyw35tF0
QZとは?
2017/06/17(土) 12:08:22.44ID:ir1eTLN60
>>498
http://peace.2ch.net/test/read.cgi/tech/1408962564/53
2017/06/17(土) 16:45:24.10ID:Znj/bctpd
>>497
私は自演とかはしてないです
スレの先輩方への感謝とともに申し添えます
2017/06/17(土) 19:52:46.57ID:O3DVEcmT0
QZ怒りの自画自賛ww
本当はマ気取りの無職無能のおっさん
誰にも相手されないから自演で賞賛してる
2017/06/17(土) 19:53:20.24ID:O3DVEcmT0
こういう自画自賛してるあたり
自演がバレバレ
2017/06/17(土) 20:07:29.95ID:mM98wL1Bd
ここに書き込む前にマニュアル見ろよ。
2017/06/17(土) 21:04:59.42ID:O3DVEcmT0
老害無職QZはきえろ
2017/06/20(火) 17:20:58.36ID:En99E4tcM
自作関数でファイルオープンする際に、ファイルが存在しなかったらその関数を強制終了したいのですが、どうすればいいんですか?
exit(0)を使うとプログラムごと強制終了されてしまいますよね?
2017/06/20(火) 17:24:57.70ID:En99E4tcM
exit(-1)でした
2017/06/20(火) 17:35:35.16ID:mOitPqgi0
自作関数の戻りの型を void にしてるならしかるべき場所で
return ;
て書くだけ
2017/06/20(火) 17:45:00.45ID:YsGmXvJhM
>>507
それでいいんですか?
void型の関数なんですが、エラーが発生した事を明示しなくていいんですかね?
2017/06/20(火) 17:59:48.83ID:RGtVeD1Gd
printf("エラーが発生したんだぜ、この野郎。やんのか?\n");
2017/06/20(火) 18:12:33.50ID:hyzgnXlk0
紙のメモ用紙に書き込むサブルーチン作って、そいつにやらせたらどうだろう
2017/06/20(火) 18:16:22.54ID:3WBJr6kg0
>>508
それでいいです
それで目的は達成出来ます
2017/06/20(火) 18:39:43.32ID:tAZ0INkH0
言語関係無いな
2017/06/20(火) 18:48:54.06ID:RHsT5Eol0
>>508
目的が変わっている
自作関数でファイルオープンする際に、ファイルが存在しなかったらその関数を強制終了したい
                    ↓↓↓↓↓↓↓↓↓↓
自作関数でファイルオープンする際に、ファイルが存在しなかったらその旨を通達して抜けたい


戻りの型を int にして 成功は 0 失敗はそれ以外のエラーコードにして戻る
ポインタでエラーコードを指す引数受けて、その指し先に値を渡す
(errorno 等のグローバル変数でエラーを伝える)

呼び出し元のほうでエラーの有無で分岐
514デフォルトの名無しさん (アウアウイー Saeb-yC+1)
垢版 |
2017/06/20(火) 22:46:25.81ID:bX2tlMgna
ちょっと直接C言語に関係ない話なのですが、

コマンドプロンプトから、標準入力からデータを受け取る必要のある
Cのプログラムを実行する際、「<」を使ってファイルから入力しています。

あるデータファイルのショートカットファイルから「<」を使って
データファイルのデータを入力するにはどうしたらいいでしょうか?
2017/06/21(水) 06:56:18.44ID:tmnPHhmOM
>>514
> ちょっと直接C言語に関係ない話なのですが、
ならよそに行けよ
2017/06/21(水) 11:47:59.41ID:x++JJuQ30
>>514
どこに誘導すればいいかわからんなw

filter(仮).exe < %1

ってバッチファイルじゃダメなのか?
2017/06/21(水) 12:03:23.32ID:P8lmP+eo0
ショートカットファイルということは windows の話かねぇ?

渡ってきてる .lnk ファイルの中身から本当のパス文字列を知って
さらにその指し先のファイルを標準入力に流す なんてことが
コンマンドラインシェルはやらんだろうな
2017/06/21(水) 14:51:27.68ID:mT0xXfH20
入力を受け取るコマンドがやればいい
2017/06/21(水) 22:27:31.29ID:7+kf0Fyw0
またQZがほざいてる
2017/06/22(木) 13:44:42.49ID:LmRn3xN/0
ショートカットファイルをリダイレクトしても
単に中身を標準入力として読み取るだけで、
解釈するわけじゃない
2017/06/22(木) 13:46:53.43ID:lDx6Yk3FH
初心者です
構造体の使い回しができないというのは、どういう意味ですか?
structがない場合です
2017/06/22(木) 14:03:59.21ID:l/KIobDzM
>>521
構造体の使い回しとは何のこと?
文脈がわからないと答えられない
2017/06/22(木) 15:01:01.41ID:nVwUJlKa0
>>521
構造体の使いまわしはできるよ
2017/06/22(木) 15:16:04.77ID:iuy16AyXM
struct のない構造体は難しいな。
自分で実装するのかな?
525デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/22(木) 16:34:33.27ID:6ZKlzltP0
すいません初学者ですが質問です

#include<stdio.h>
double add(double i,double j){return i+j;}
double sub(double i,double j){return i-j;}
double mul(double i,double j){return i*j;}
double div(double i,double j)
{if(j!=0.0) return i/j; else return 0.0;}
int main(void){
double a=39.0,b=12.0;
double (*func)(double x,double y);
func=add;
printf("add:%f\n",(*func)(a,b));
func=sub;
printf("sub:%f\n",(*func)(a,b));
func=mul;
printf("mul:%f\n",(*func)(a,b));
func=div;
printf("div:%f\n",(*func)(a,b));
return 0;
}

8行目の(*fanc)の意味が解りません
例えばfunc=addで代入すると(double *add(double i,double j){return i+j;})(a,b)になるんですか?
(double add(double i,double j){return i+j;})(a,b)になってadd(double i,double j){return i+j;}の部分で
プロトタイプ宣言が呼び出されるからおkなんですか?そうなると(*fanc)の*の意味が解らなくなります。
ちょっと、頭が混乱してて訳の解らない文章になってるかもしれませんが上記プログラムで何故スムーズに行くのかがいまいちよく解りません
2017/06/22(木) 16:39:23.60ID:XYYNYBrF0
>>525
関数ポインタの普通の使い方やん。
それよりゼロで割った場合にゼロ帰すのは変だと思う。
527デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/22(木) 16:40:28.01ID:6ZKlzltP0
もうちょっと言うと8行目の*がポインタ宣言として何でfuncにaddとかmulとか代入すると関数を参照できるのかよく解りません
*が無いとコンパイラからエラーを指摘されるんですが*がなくても関数のプロトタイプ宣言と同じ形になるのに関数が呼び出されないのが納得いきません
528デフォルトの名無しさん (ワッチョイ d7c1-NIhq)
垢版 |
2017/06/22(木) 16:42:15.27ID:6ZKlzltP0
>>526
うーん、なんていうか普通だとしてもなんか納得できないって言うか理屈の順序がわからないというか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況