C言語なら俺に聞け 150

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん (アウアウクー MM57-IE4z)
垢版 |
2019/02/06(水) 13:39:03.21ID:c4bnQMl3M

次スレを作る時は上記1行をコピーして2行に増やして必ず1行目に入るようにしてください。

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/

※前スレ
C言語なら俺に聞け 149
https://mevius.5ch.net/test/read.cgi/tech/1540731704/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/03/23(土) 03:00:16.33ID:lRnozO4Da
for のかっこの中は二個あるじゃん、いつも
2019/03/23(土) 03:14:04.86ID:0Wp5e8jo0
>>885 で for ループを使う必然性って何だろう
while でも良いように見える
2019/03/23(土) 06:01:58.96ID:fQCcwCLn0
>>887
while (1) {
は warning が出るコンパイラもありますので
for (;;) {
を多用しています…
2019/03/23(土) 06:17:45.22ID:jegHMgvE0
確かに for (i = n;;) /* 初期化あり, 継続条件なし, 更新なし */ よりは
i = n; // 初期化
for (;;) // 無限ループ, 終了判定はループ内
の方が for の使い方では見慣れた書き方だよな。

というか for (i = n;;) を見せられたら、いったん立ち止まって
頭の中で2行分けに翻訳して理解すると思うわ。
2019/03/23(土) 06:25:51.88ID:2BzPzaMr0
while(1) に難癖つけてくるコンパイラって具体的に何だ?
2019/03/23(土) 06:42:04.57ID:WDi4jE890
HPUXだった気がす
2019/03/23(土) 07:22:12.89ID:0Wp5e8jo0
https://www.sejuku.net/blog/25197#continue



if(i + 1 < 3) {

と書かれていて i < 2 でないのは何故でしょうか
先進的なコンパイラだと自動的に最適化されるものなのでしょうか
2019/03/23(土) 07:38:42.49ID:lQ0YIRmF0
while (1 == 1)
2019/03/23(土) 08:03:50.35ID:jegHMgvE0
>>892
実行結果を見ると、最初に表示されるのは「3回目の処理です」だね。
この 3 はループ変数 i から算出される値。

最初に表示したい値である 3 を if の条件式の中にも書いておく方が
プログラムが何をやってるか(3を表示する状態になるまで continue する)を
読み取りやすいという考え方かと。
if (i < 2) を見て「i < 2 の間は continue される。i == 2 になったら
continue されずに下の処理に進む。すると最初に表示される数字は i + 1 で 3」
と理解するより簡単だろう(とプログラムを書いた人が考えたのだろう)。


実験したところ、ちゃんと最適化されるみたいね。
if (i + 1 < 3) でも、アセンブリの方では 2 との比較になってた。
2019/03/23(土) 08:08:46.89ID:2BzPzaMr0
>>891
情報ありがとう
希ガスってことは昔の話だよな
2019/03/23(土) 08:09:19.77ID:2BzPzaMr0
>>893
それを言うなら while(!0) だろ
2019/03/23(土) 08:16:45.51ID:hkiXoQ0jd
everlasting的な英単語を1でdefineしてwhileに突っ込んで無限ループ作ってるコードなら見たことある
却って分かりにくかった
2019/03/23(土) 08:20:29.61ID:3KsHUf0Y0
>>897
悪いなのび太、それ単体試験用のマクロなんだ
2019/03/23(土) 08:30:38.60ID:2BzPzaMr0
#define forever while(1)
これでええやん
2019/03/23(土) 14:07:37.70ID:OxlPANCja
知りたいことが答えてもらえないが文脈からさっすると
for(i = n;;)は ;; こいつが無限ループさせる whileのときの (1)みたいなもんなんかな
そうなると i = n って表記は i が nといっしょやったらずっと無限ループしとけってことになるんかな
んーそうう考えると for(;;)だったら無条件でループやっとけって感じでつかえそうだけど i = nならとかなんか条件はいるなら ;; こんなん
つかわんでももっと他になかったんじゃろかと思うな。 しかしこのテキスト何の説明もなくいきなりあんな技使いやがってやぶりすてたろか
901デフォルトの名無しさん (ワッチョイ c602-rXtv)
垢版 |
2019/03/23(土) 14:23:08.16ID:Bvojjkpo0
>>900
for 分のカッコ内は必ずセミコロンが2つ必要で、最初の項目は変数の初期化、2番目の項目は終了条件、
3番目の項目はブロックの最後に実行させる(主に変数をインクリメントしたりデクリメントしたりする)処理だ。
この項目が抜けていた場合はその処理に関して何もしない。例えば2番目の項目が抜けていたら終了条件なし
(つまり無限ループ)になる。

まあ入門書見ればわかると思うが、これの置き換えだ。

i = 1;
while (i < 3) {
 /* 何かの処理 */
 i++;
}



for (i = 1; i < 3; i++) {
 /* 何かの処理 */
}

特別なのは終了条件が空の場合は終了させなくなる事だけ。
902デフォルトの名無しさん (ワッチョイ c602-rXtv)
垢版 |
2019/03/23(土) 14:23:33.00ID:Bvojjkpo0
for 分じゃない for 文だ。
2019/03/23(土) 15:44:48.19ID:jegHMgvE0
>>900
すまんね。>>885 の質問を見て、普通の for の使い方、つまり
for (初期化; 継続条件; 再初期化) は理解してると感じたのだ。
その辺の説明は >>901 を見てもらうとして、ちょっと気になった点。

for (i = n;;) の i = n は「i が n に等しければ…」ではなく、
「i に n の値を代入する」だよ。等しいかの判定には == (イコール2個)を使う。
for の普通の使い方では「ループ制御変数 i の値を n に初期化」ということ。


代入の = (イコール1個)と、等値判定の == (イコール2個)は、
携帯端末で見分けにくかったりするのかな。
自分では新式の装置を使わないので、そういう部分に思い至らなくてな。
2019/03/23(土) 16:17:36.63ID:dHpVxeMm0
お願いします。OSはcentos7です

メルセンヌツイスタを使って、ひとつだけ乱数を出したいのですが
乱数を出す間隔が非常に狭く、以下の関数でtime(NULL)を用いると
同じ乱数ばっかり出てきてしまいます。

※関数はコレを使ってます
http://www.sat.t.u-tokyo.ac.jp/~omi/random_variables_generation.html

たとえば、1回関数を実行して、ひとつ乱数を生成。
それを、秒間20や、30繰り返したとしても異なる乱数が出てくる方法ってありませんでしょうか

勝手なお願いですが、できる限り簡単な方法でお願いします。
VBAでパチンコシミュレーターを作ったのですが、
実行速度が非常に遅く、もっと高速化するためにCの勉強を始めたばっかりです
2019/03/23(土) 16:34:57.54ID:UrlZPLWE0
まさか毎回シード関数呼んでるとか?
2019/03/23(土) 16:52:06.42ID:2BzPzaMr0
>>904
time(NULL) は1秒以上の実行間隔がないとアウト
それ以外の何らかエントロピー源を使わにゃならんということだ
たとえばスペシャルファイルの/dev/randomだとか、
Core-i7ならrdrand命令を使うとか
2019/03/23(土) 17:11:16.47ID:beYYYDPta
まあシステム由来のシードを使えばいいんだけど、分布・周期が問題なんだから同じ数字が出てきてもいいんじゃない?
シミュレータってそういうもんですよ。
2019/03/23(土) 17:26:50.18ID:jegHMgvE0
>>904
乱数値を1個だけ返すコマンドを作成、シード値に time() を使用。
同じ1秒の間に何度もコマンドを呼ぶと同じ値しか返ってこない。
次の1秒も(さっきまでと違う値だが)同じ値が何度も返ってくる。
…という話なら、しごく当然だね。

元の目的のプログラム、パチンコのシミュレータだっけ?
そっちをCで作り始めて、メルセンヌ・ツイスタの関数を組み込んじゃえば
自動的に解消する問題って気がするけど。

シミュレータの方はVBAで続けて、乱数だけCのコマンドを使うって方針なの?
2019/03/23(土) 17:31:41.38ID:2BzPzaMr0
それだけのためにCOM作るとかアホくさくね?
2019/03/23(土) 17:44:46.83ID:jegHMgvE0
>>909 それはその通りだね。
VBAはWindowsで動かして、CentOSの方では「乱数サーバ」を回す、
というクライアント・サーバ・モデルも何か変な感じだし。

だから、全面的にCentOS上のCでの開発に移行する準備として
乱数ルーチンのテスト用に値1個だけ返すコマンドを作ってみたら、
「立て続けに呼ぶと同じ値しか出ないぞ」と心配になったのかな、と。
2019/03/24(日) 11:20:48.13ID:ac/Kn2Xnp
>>752だ、報告遅くなってすまん
合格してた!!!
俺に教えてくれた人達、本当にありがとう
勉強してC言語はよく分からんってことだけ分かったわ
2019/03/24(日) 11:21:36.49ID:ac/Kn2Xnp
ちなみに不合格だと必須科目だから同じ科目をもう一回受講しなきゃいけなかった
2019/03/24(日) 11:28:18.02ID:5d/S++S30
>>905
たぶんそれ
2019/03/24(日) 12:24:06.58ID:fqkT23RA0
>>912
むしろそれなら不合格でちゃんと勉強したほうが良かったような?
2019/03/24(日) 13:17:04.74ID:YLYVMPlgd
情報系じゃないのに共通科目とかで必須指定されてたりしたら単位だけもらっても問題ないんでね?
916デフォルトの名無しさん (ワッチョイ c602-rXtv)
垢版 |
2019/03/24(日) 13:39:30.48ID:ynFGlX0q0
>>911
おめ
2019/03/25(月) 16:27:08.09ID:7UyvjyQO0
dfコマンドの -h オプションみたいな
数値をヒューマンに優しい表現にしてくれるライブラリって
ありますか?

ddみたいに、ヒューマンから数値にしてくれるやつも欲しい
2019/03/25(月) 19:21:21.61ID:Dver3QI+0
log A / log 10 とって 10の累乗数出して 3で割って近場の補助単位を選択
(ヘクトとかデシとか 3の倍数じゃないのは 知らんw)
919デフォルトの名無しさん (アウアウウー Sa2f-7Ozv)
垢版 |
2019/03/25(月) 20:44:43.02ID:T0osdeZXa
ライブラリは知らんなあ。
でも簡単だから作っちゃうなあ。
あ、そうだ。お題スレのお題にするか。簡単すぎて馬鹿馬鹿しいかも知れんが。
2019/03/25(月) 22:42:17.42ID:kHZO8Xph0
ライブラリは知らんなあ。
でも簡単だから作っちゃうなあ。
あ、そうだ。お題スレのお題にするか。簡単すぎて馬鹿馬鹿しいかも知れんが。
2019/03/25(月) 23:52:18.38ID:ECmJs6xT0
あれ?何故2重に書かれている?ま、いいか。
922デフォルトの名無しさん (ワッチョイ c602-rXtv)
垢版 |
2019/03/26(火) 00:15:09.07ID:xyG5xdoY0
>>917
お題にした。
https://mevius.5ch.net/test/read.cgi/tech/1549160513/779
やがて色々な言語で答えが書かれると思う。
2019/03/26(火) 08:54:20.26ID:JLA/sJXB0
あれライブラリ化されてるのかと思ってたけど無いのか
意外とあちこちのコマンドで出てくる仕様だし
汎用的なのがあると思ってた
2019/03/26(火) 13:28:06.72ID:YPF/ckzld
そのコマンドのソース入手して見てみると面白そう
925デフォルトの名無しさん (アウアウウー Sa2f-7Ozv)
垢版 |
2019/03/26(火) 13:55:17.17ID:PDyA3k9ga
>>923
GNUの複数のコマンドで使われてるからあるかもよ。詳しい人がこのスレ見てないだけで。
まあしかし ls も df もソース公開されてる筈なので探せば何れわかる。
2019/03/26(火) 15:22:52.77ID:BwnADdEO0
libxo
2019/03/26(火) 16:26:09.83ID:8ujFPLE90
https://wiki.freebsd.org/LibXo
https://www.freebsd.org/cgi/man.cgi?query=libxo&;sektion=3&manpath=freebsd-release-ports
https://juniper.github.io/libxo/libxo-manual.html

ふむ…
2019/03/26(火) 17:13:01.28ID:ExDeReqX0
GNUのソースを参考にするのは良いけど、GPLへの感染に気をつけないとな。
2019/03/26(火) 19:37:33.33ID:8ujFPLE90
FreeBSDのuserlandな訳で…
ライセンスは自身で確認されたし

「GPL汚染」という言葉は良く聞くけれど「感染」って何でしょう
2019/03/26(火) 20:07:56.73ID:rSL1tIwA0
>>929
https://www.wdic.org/w/TECH/GPL%E6%B1%9A%E6%9F%93
2019/03/26(火) 21:19:25.60ID:8ujFPLE90
>>930
「GPU汚染」という非常にポピュラーな言い回しを使わず
敢えて「感染」と表現する理由が全く書かれていないようです
2019/03/26(火) 21:22:07.28ID:qKdh3SVz0
>>931
感染の方が伝播するニュアンスが強調されている気がする
2019/03/26(火) 21:26:56.44ID:ExDeReqX0
「GPL汚染」って言葉はGPLへの敵意が感じられるんで避けたのよ。
日頃からGNUさんのおかげで色々便利に使わせてもらってるわけだし。

でも、うっかり1ヶ所でも使うと、プロジェクト全部のソースが
GPLライセンスになって公開を義務付けられたりするのは、
やっぱ「感染」じゃないか、と思う部分もあったり。


よく「車輪の再発明をするのはバカバカしい」とか言うけど、
GPLが「丸い車輪」の利権を押さえてるせいで、
わざわざ自前で「歪んだ車輪」を作って使わざるを得ない
境遇に置かれてる人もいるんじゃないかな、と。

…この場で書くような話でもないんだがネ。
2019/03/26(火) 21:33:22.86ID:rSL1tIwA0
>>931
> 感染性
> これはあたかも、伝染病(それも不治の病)が広がっているかのように見える。
> このため、ソースを公開しないソフトウェアを作る一般的なソフトウェアメーカーや、
> 他のライセンス支持者からは、「感染性のライセンス」「ウイルス性のライセンス」と呼ばれる。

他人事なやつにゃ、あーそー(asshole)でしかないんだろうな
935デフォルトの名無しさん (ワッチョイ c68c-WX4v)
垢版 |
2019/03/26(火) 21:57:53.69ID:X9x/YQnQ0
でも裁判は自分で起こさなければならない。
2019/03/26(火) 22:12:23.05ID:5H/KxRwB0
>>931
マイナーな言い回しをするときは理由を添えないとダメなの?
2019/03/27(水) 06:47:37.38ID:jMm/WIPk0
>>933 でうっかり「GPLライセンス」と書いたけど、
GPL が GNU General Public License のことなら
GPLライセンスだと「〜ライセンス・ライセンス」だね。
「〜ソースがGPLライセンスになって」は
「〜ソースにGPLが適用されて」あたりの方が適切だったか。

言葉の選択に敏感に気づいてくれたんで、理由の説明に5行ほど使ったが、
半面、「GPL汚染」を知っる人が、感染だと分からないことは予期しなかった。
(これはカマトトにカマトトで応じてるだけ、のつもり、為念)
「GPL汚染」がポピュラーってのは正式な用語ではないことも認識してるんだろうし、
してみると技術用語に対する完璧主義とも違うんだろうな。


…言葉の使い方について、少し言葉を使ってみた、と言う感じのお話。
2019/03/27(水) 07:23:31.84ID:MBTJ/mxD0
ん、待て待てGPL汚染じゃなくGPU汚染と931は言っているな
NVIDIAの話か? それともAMD?
2019/03/27(水) 07:40:33.52ID:jMm/WIPk0
ありゃりゃ、確かに「GPU汚染」だね。
文脈に基づく先入観で「GPL汚染」としか見えてなかった。
すると、そっちがお誘いだったのかな。節穴で申し訳ない。

ついでにコピーせずに投稿文を手打ちしてることの傍証にもなったね。
2019/03/27(水) 08:13:14.97ID:ksdLiPzkd
どんな有能なプログラマーにもタイプミスはある。許してさしあげろ。
それより5ch用のリントツールが必要だということが浮き彫りになったな。
2019/03/27(水) 09:20:30.29ID:anJ1LIGv0
GPL汚染というのは商用アプリケーションを作る会社が
GPLライセンスのライブラリーを使いたいのに
ソースを公開すると売れなくなるから使いたくないから言ってるのと
ソースをみせたくないひとが言っているんだよ
942デフォルトの名無しさん (ワッチョイ c602-I58O)
垢版 |
2019/03/27(水) 23:28:49.86ID:oM4knkxt0
まあ味方にもよるよね。GNUの思想を支持する側から見たらプログラムを自由に使えない事は悪だろうし。
943デフォルトの名無しさん (ワッチョイ c602-I58O)
垢版 |
2019/03/27(水) 23:29:19.56ID:oM4knkxt0
見方だ
2019/03/28(木) 11:43:27.92ID:8NAOSscd0
GPLとGNUが脳内で混線してGPUになったのか
945デフォルトの名無しさん (アウアウウー Sa0f-dxKi)
垢版 |
2019/03/28(木) 12:45:58.19ID:0gfjfVxLa
GNL
2019/03/28(木) 19:27:35.93ID:l9a4bgRH0
ちょっと前MMUをMMOと言っちゃって、ちょっと恥ずかしかった。
2019/03/28(木) 20:31:48.77ID:3LZYwZb10
>>946
NWO=New World Order なら今的陰謀論にマッチしますね
NWO: https://ja.wikipedia.org/wiki/%E6%96%B0%E4%B8%96%E7%95%8C%E7%A7%A9%E5%BA%8F
948デフォルトの名無しさん (アウアウウー Sa0f-dxKi)
垢版 |
2019/03/28(木) 21:03:56.02ID:KhTRBxbZa
WBA
949デフォルトの名無しさん (ワッチョイ ef02-9gjM)
垢版 |
2019/03/28(木) 22:45:08.37ID:WL/rMpQN0
WEP
950デフォルトの名無しさん (スフッ Sdbf-g8C6)
垢版 |
2019/03/29(金) 19:40:14.87ID:jbLCE6Gyd
初心者です
間違っているところをだれか教えてください
今作ろうとしてるのは入力した文をバラバラにして返すプログラムです
https://i.imgur.com/huSgBsa.jpg

https://i.imgur.com/NW3rZ7M.jpg
https://i.imgur.com/xAQu9le.jpg
951デフォルトの名無しさん (スフッ Sdbf-g8C6)
垢版 |
2019/03/29(金) 19:45:04.77ID:jbLCE6Gyd
https://i.imgur.com/4iAlV1x.jpg
こうなるように作りたいです
2019/03/29(金) 19:52:38.08ID:49nFrL1E0
25行目からが

if(c!=0){
break;
}
else{
continue;
}
while(c==0);

になってるけどwhileの場所が間違ってる。
2019/03/29(金) 19:54:41.57ID:49nFrL1E0
28行目からだわ。つまり}が足りてない。そこだけ直したら上手くいくのかは確認してないけど。
954デフォルトの名無しさん (スフッ Sdbf-g8C6)
垢版 |
2019/03/29(金) 19:55:29.51ID:jbLCE6Gyd
>>952
正しくはどうなりますか?すみませんさっぱりわかりません…
955デフォルトの名無しさん (スフッ Sdbf-g8C6)
垢版 |
2019/03/29(金) 19:56:17.40ID:jbLCE6Gyd
>>952

>>953
今気づきました!!ありがとうございます!やってみます!
2019/03/29(金) 20:15:27.43ID:kPfQN3Sza
kishutu[] 渡してるところ大丈夫か?
957デフォルトの名無しさん (スフッ Sdbf-g8C6)
垢版 |
2019/03/29(金) 21:09:07.83ID:jbLCE6Gyd
https://i.imgur.com/H76l6vb.jpg
https://i.imgur.com/ywiNmxR.jpg
これの原因わかる方いますか?
958デフォルトの名無しさん (スフッ Sdbf-g8C6)
垢版 |
2019/03/29(金) 21:13:20.24ID:jbLCE6Gyd
>>956
ありがとうございます
そこも間違えてたみたいです
2019/03/29(金) 22:03:29.44ID:b4NIHWKk0
>>957
27行目[]いらんと思う
960デフォルトの名無しさん (スフッ Sdbf-g8C6)
垢版 |
2019/03/29(金) 22:53:43.19ID:jbLCE6Gyd
https://i.imgur.com/nY9LuSR.jpg
https://i.imgur.com/U46WJvs.jpg
https://i.imgur.com/wwRNBB2.jpg
試してるのですが最後の1文字が表示されないままずっと実行中になってしまいます。3枚目はhello world入力で何回か実行した時の画面です。上の3回は強制終了して、一番下のはフリーズしてるやつです
どなたかわかる方いましたら教えてもらえないでしょうか
何度もすみません🙏
2019/03/29(金) 23:02:18.73ID:aBFadZYQ0
随所でprintfしまくって、変数の値が想定通りか確認していくんだ
これをprintfデバッグという

ってか、まともなデバッガがある環境でやった方がいいよ
2019/03/29(金) 23:10:52.10ID:kPfQN3Sza
>>960
配列の添字も一緒にprintfしてみれば。
あと変数名は意味のあるもんにした方がええよ。 a とか b はあかんわ。
あと配列は初期化した方がいいかもよ。自分で中身を把握してれば別にしなくていいんだけど。
2019/03/29(金) 23:25:13.83ID:49nFrL1E0
>>960
check(int a, int b, int c[]);
がだめ。

aが既出の時は0を返して、既出じゃないときはaを返す関数になってるけど、
aに0を渡すと既出じゃなくても0が返るから既出扱いになる。
2019/03/29(金) 23:26:13.92ID:49nFrL1E0
既出の時は-1を返すようにすればなおせる。
2019/03/29(金) 23:36:01.88ID:49nFrL1E0
あと"hello world" に対してsent[10]は長さが足りてない。
966デフォルトの名無しさん (スフッ Sdbf-g8C6)
垢版 |
2019/03/30(土) 06:48:18.36ID:+pUtVW5zd
>>961
>>965
無事解決しました
大変ありがとうございました(^ω^)
2019/03/30(土) 11:40:45.41ID:NEaY98E/0
スマホ世代は画像と文字の区別が付かないらしい
これホントだよ
2019/03/30(土) 12:43:03.20ID:IAXXlS6v0
区別を付けられる世代には是非、画像認証で出される文字を認識するプログラムを書いてもらいたい
2019/03/30(土) 12:53:42.39ID:XVCnFM45d
>>967
これからは書き込む時にヘッダーにContent-Typeつけないとダメだな
970デフォルトの名無しさん (ワッチョイ ef02-9gjM)
垢版 |
2019/03/31(日) 18:22:14.86ID:x4Dlbn8C0
>>968
OCRでできるかもね。
2019/04/01(月) 12:25:47.95ID:MG1i8foP0
新元号がC言語に聞こえた、末期だ
2019/04/01(月) 12:28:19.16ID:mARdLrg20
0O
2019/04/01(月) 12:37:22.21ID:kX8UNAymx
>>972
れいわ
か、分かりにくい
2019/04/01(月) 13:26:16.54ID:Fc0B8SHO0
(0_○)
2019/04/01(月) 18:18:06.49ID:6TSsT2Q/0
0+
2019/04/01(月) 20:16:15.42ID:Ut3weUXPM
C言語でOOか
977デフォルトの名無しさん (アウアウエー Sa3f-XwTE)
垢版 |
2019/04/01(月) 21:33:02.04ID:v6mAk26Pa
「要素型がint型で要素数がnの配列を受け取って、
全要素に添字と同じ値を代入する関数set_idx」を作成しました。
http://codepad.org/krsZoljq

配列aの要素数はマクロ定義で#define NUMBER 10とし、
問題なく動作しました。
ところが、この要素数10を60に書き換えてみたところ、
コンパイルされたexeファイルを実行しても動作しません。
コンパイラはMinGW(gcc)です。
思い当たる原因を教えていただけないでしょうか。
2019/04/01(月) 21:34:29.79ID:OIWsA4Npd
>>977
配列変数aのサイズを宣言せよ。
2019/04/01(月) 21:45:33.75ID:Mx+j7LaB0
int a[NUMBER];
と書いても駄目かね
980977 (アウアウエー Sa3f-XwTE)
垢版 |
2019/04/01(月) 22:08:10.15ID:v6mAk26Pa
>>978
>>979さんの仰る通りint a[NUMBER]={0};と書いたら意図通りに動作しました。
a[]と宣言するのでは、配列に割り当てる適正なメモリサイズが確保できないということでしょうか、、、
2019/04/01(月) 22:14:50.09ID:Mx+j7LaB0
>>980
どういう教科書を使っていて、どういう風に学習してるのか知らんが…
先生に確認した方が早いんでねえか
2019/04/01(月) 22:15:35.84ID:+c9Nhd8T0
>>980
初期化に使った右辺に合わせて自動的にサイズを決定してくれるので、

int a[] = {0};

だと大きさは 1 と指定したのと同じ。
2019/04/01(月) 22:29:36.01ID:v6mAk26Pa
>>981
社会人で完全に独学なので、質問するとしたらこういう場しかなくて…
初歩的な質問でスレ汚し申し訳ないです。
ちなみに教科書は柴田望洋『新・明解C言語(入門編)』を使っています

>>982
なるほど!
とてもわかりやすいです
2019/04/01(月) 22:51:19.76ID:Mx+j7LaB0
私も「ド素人&独学でしかやってない&プライベートでしか使ってない」ってかんじですが
set_idx関数がバッファオーバーラン対策を全くやってないのが気になるかも

int *set_idx(int n) とかいう風な、ポインタを返す関数に書き換え、関数内でmallocというのが考えられるけど
正確にセキュアな方法はワカラン


https://www.ipa.go.jp/security/awareness/vendor/programmingv1/b06_02.html が参考になるかも知れないし
「まだ早い」ということになるかも知れないし、何とも言えない
2019/04/01(月) 22:53:26.21ID:evzlx3m20
可能ならC言語は諦めるのがおすすめかな…
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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