X



C言語なら俺に聞け 142 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8a6f-bDrV)
垢版 |
2017/08/10(木) 20:21:23.44ID:hEocmkh50
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://mevius.2ch.net/test/read.cgi/tech/1500293207/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0683デフォルトの名無しさん (ワッチョイ 0b3f-MWTH)
垢版 |
2017/10/13(金) 15:14:34.29ID:/fw1jTt60
>>678
1行コメントならもちろん//を使うが
コメントが2行以上になる可能性が否定できない場合、
毎行いちいち//が必要なのは面倒なので
/*
*/
と折り返す恰好にする

それと1行コメントは内容的に馬鹿っぽくなりやすい
なんて気持ちもちょっとある
0684デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
垢版 |
2017/10/13(金) 16:31:54.32ID:UePpwGnn0
C99非準拠の環境って工場のメンテとかそんな感じっすかね
0685デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
垢版 |
2017/10/13(金) 16:50:15.81ID:UePpwGnn0
>>682
も気になるな

アスキーコード "2F2F"って何かあるんですか?
0687デフォルトの名無しさん (ワッチョイ 1993-grZD)
垢版 |
2017/10/13(金) 17:23:15.84ID:kwktlkZb0
>>682 の話は行の最後に \ があると次の行に継続するってやつかな。
その言語仕様と Shift-JIS の特定文字との組み合わせで問題が起きる。
「表」や「能」は文末に来る可能性が高い字でしょ。
0702デフォルトの名無しさん (ワッチョイ 0b3f-MWTH)
垢版 |
2017/10/13(金) 19:53:08.82ID:/fw1jTt60
またfgets厨が湧いたか
Cスレには付きものだが
誰が吹き込んでるんだかしつこさが異常なんだよな
まったく
0703デフォルトの名無しさん (ガックシ 06eb-HijE)
垢版 |
2017/10/13(金) 20:16:18.00ID:qDJA92iZ6
>>701
/* -*- C -*- */

#include <stdio.h>

int main()
{
int input;
scanf("入力して下さい:%d", &input);
printf("%dの二倍は%d\n", input, input * 2);
return 0;
}
0705デフォルトの名無しさん (ワッチョイ 0b3f-MWTH)
垢版 |
2017/10/13(金) 21:08:48.11ID:/fw1jTt60
何がどのように何に対して優れているんだ?
腐っても工学者たるもの客観的で再検証可能な主張をしてみな
0707デフォルトの名無しさん (ササクッテロロ Sp45-NqOW)
垢版 |
2017/10/13(金) 21:17:30.86ID:yVfJQeWEp
え?scanfは、この通り打ち込まないと認識しないよって事だろ?
0709デフォルトの名無しさん (ワッチョイ 5975-HijE)
垢版 |
2017/10/13(金) 21:31:55.79ID:DZqiVJRN0
>>706
dクス
0712デフォルトの名無しさん (ワッチョイ eb7f-MV6u)
垢版 |
2017/10/13(金) 22:15:45.85ID:xDZ8VANT0
それ都市伝説だから、単に使い方間違えてるだけだから!
フィールド幅をちゃんと指定すればscanf系でも安全だよ?

まぁ、エラーメッセージの都合上fgets使うかもだけど。。。
0716デフォルトの名無しさん (ワッチョイ 1387-NqOW)
垢版 |
2017/10/13(金) 22:31:22.01ID:KDt3KwS+0
C言語はアセンブラのラッパー言語だから、そう言うもんは各自が気を付ければいいのであって、へんな関数量産すんな。
0718デフォルトの名無しさん (ワッチョイ 1993-grZD)
垢版 |
2017/10/14(土) 05:25:15.07ID:G4fIdpwa0
m修飾子はscanf()の中でバッファの確保とポインタ代入をしてくれる、か。
使用者側がバッファを用意して容量はこれだけ、と言明するのとはちと違うね。

実用だと書式文字列をsnprintf()か何かで生成する手かなぁ。
0720デフォルトの名無しさん (ワッチョイ 799f-vMUl)
垢版 |
2017/10/14(土) 06:44:41.93ID:YpZiBRe40
>>718
文字数制限したい場合は %3mc のように c を使うとできる。メモリ確保は相変わらず scanf() 側でやるので後で free() が必要であることには変わりがないが。
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/scanf.3.html
0721デフォルトの名無しさん (ワッチョイ 0bf0-MWTH)
垢版 |
2017/10/14(土) 07:16:53.80ID:F19RwFTi0
>>711
くだらんなあ
%sのためにわざわざscanfなんぞ使う珍獣の話しかできんのかおまえは
0726デフォルトの名無しさん (ワッチョイ 799f-vMUl)
垢版 |
2017/10/14(土) 13:41:17.27ID:YpZiBRe40
windowsの方でもscanf()のmあるのでは?
0731デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
垢版 |
2017/10/14(土) 15:59:02.19ID:bKRFV+pB0
はい ちょっとお邪魔しますよ
ISR() signal() の違いについて
どちらを使うべきなのか うんちくきぼんぬですよ
0732デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
垢版 |
2017/10/14(土) 16:17:48.14ID:bKRFV+pB0
↑割り込みハンドラで使う関数についての質問です
0733デフォルトの名無しさん (ワッチョイ 1387-NqOW)
垢版 |
2017/10/14(土) 16:24:17.93ID:J5VLsuMb0
組み込み系だとmallocなんか初期化関数ん中でしか使わない。
0735デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
垢版 |
2017/10/14(土) 16:42:09.10ID:bKRFV+pB0
なるほど! ありがとうございました
0737デフォルトの名無しさん (ワッチョイ 69d2-89ZN)
垢版 |
2017/10/14(土) 17:13:04.55ID:bKRFV+pB0
割り込みにまさかの独自ライブラリがあるとは思わなかった
>>736の参照先見ると色々なアトリビュートが設定できるようになっとるわw
その内容をみると自前で割り込み関係のレジスタ叩けば実現可能な機能ばかり
##pop/push/reti自動付加禁止だけはsignal()では実現不能?
signalでよさそうな気が。。。
0739デフォルトの名無しさん (ワッチョイ 0bf0-MWTH)
垢版 |
2017/10/14(土) 19:42:35.98ID:F19RwFTi0
>>722
他には?
珍獣でないと主張するにはnが小さすぎるぜ
その小さすぎるnでどうたら言っちゃうおまえ
自らへの死刑宣告を読み上げている自覚はあるのか?
0740デフォルトの名無しさん (ワッチョイ 79b3-dPak)
垢版 |
2017/10/14(土) 19:59:48.25ID:4XKuJznc0
クッサ
0741デフォルトの名無しさん (ワッチョイ d360-qUyi)
垢版 |
2017/10/15(日) 02:10:37.75ID:12RNBD+40
>>739
https://qiita.com/Tsutajiro/items/a5620b17ac530cc96e87
https://ja.wikipedia.org/wiki/Scanf
http://www9.plala.or.jp/sgwr-t/c/sec05.html
http://rainbow.pc.uec.ac.jp/edu/program/b1/Ex2-1b.htm
https://stackoverflow.com/questions/2155518/what-is-scanfs-and-scanfd-format-identifiers

「scanf("%s"」とグルるだけで、バッファオーバーランの危険がある注記のない上記記事が山のようにでてくる。
おすきなだけどうぞ、このように説明の手間を省きおざなりに scanf("%s") としてその場をとりつくろい、
読んだ人間は経験が少ないため、これでもいいのか、と勘違いしてしまう例は多々ある

scanf() は悪
やるんなら、fgets() してから sscanf() だの atoi() だの strtol() だので処理するのが定石
0742デフォルトの名無しさん (ワッチョイ 799f-vMUl)
垢版 |
2017/10/15(日) 04:40:36.84ID:aLoOQk2A0
>>727
てか、C言語のライブラリの問題なのであるともないとも言えるよな。
POSIX準拠でないCコンパイラでも同じ動きをするライブラリをリンク時または実行時にリンクするならそう動くわけだし。
WindowsでもGCCでコンパイルするならそうなるわけだし。Cygwinの中ならなおのことそうだ。
0743デフォルトの名無しさん (ワッチョイ 799f-BSx0)
垢版 |
2017/10/15(日) 05:29:35.87ID:ZgJv24or0
そう言えば fgets() も1行の長さが指定した長さ以上になった場合に入力に残るよな。
で、だいたいは妙に長いバッファ用意して誤魔化す(またはそういう仕様にするw)わけだが、
そういうのが通用しない場合はそれを上回る入力をされた時にエラーにするかまたは入力に
残った不要な文字列を捨てる処理はあった方が良い。そうでないなら GCC の getline() を
使うかまたは自作するかだ。
0745デフォルトの名無しさん (ワッチョイ 13b3-itUa)
垢版 |
2017/10/15(日) 07:05:24.20ID:KCBqed/H0
>>743
> そう言えば fgets() も1行の長さが指定した長さ以上になった場合に入力に残るよな。
当たり前だろ
より長い入力が想定されるなら普通に改行がでてくるまで続けて読めばいいだけだし
妙に長いバッファとかアホすぎる w
0747デフォルトの名無しさん (ワッチョイ 0102-MWTH)
垢版 |
2017/10/15(日) 09:47:59.48ID:J//jr+AC0
はははは、やっとn=6か
で、%sさえ使わなきゃscanfは安全なのか?
0748デフォルトの名無しさん (ワッチョイ 0102-MWTH)
垢版 |
2017/10/15(日) 09:48:32.63ID:J//jr+AC0
>>741
>>747
0751デフォルトの名無しさん (ワッチョイ d1c7-MWTH)
垢版 |
2017/10/15(日) 13:38:38.59ID:R4tP3Q0h0
>>749
わからないだと?
おまえシッタカこいてただけか

まあそうだろうな、%s以外に言及できないようだから
0752デフォルトの名無しさん (ワッチョイ d360-qUyi)
垢版 |
2017/10/15(日) 14:19:43.64ID:12RNBD+40
>>751
fgets()でとりあえず読み込むのは有力な方針だからね、まあsscanf() を後段で使うことはあるね
scanf() のチマチマした書式は必要時に追いかければいい、今調べる必要はないと思うね

>シッタカ
大局観といってほしいね
0753デフォルトの名無しさん (ワッチョイ 794b-dPak)
垢版 |
2017/10/15(日) 17:10:16.88ID:/ln1Xcyy0
scanf vs fgets
もう終わり?
0754デフォルトの名無しさん (ワッチョイ e9c6-BSx0)
垢版 |
2017/10/15(日) 17:14:39.09ID:Yk/ODCzd0
くだらん戦いだ
0756デフォルトの名無しさん (ワッチョイ d108-MWTH)
垢版 |
2017/10/15(日) 19:51:17.65ID:DZC0OlhV0
>>753
終わりつーか始まってない
そもそもscanfを把握してない御仁とでは話にならなくて
0757デフォルトの名無しさん (ワッチョイ d360-qUyi)
垢版 |
2017/10/15(日) 20:51:34.80ID:12RNBD+40
scanf() の詳細仕様を把握しないと判断できない、というのはどうかな?
scanf() が初期のころから建て増し建て増しでどんどん増えていったあの方向性は、正しくない複雑化のしかただと思うよ
scanf() を書く側にたってみると、おぞましい
0758デフォルトの名無しさん (ワッチョイ e9c6-BSx0)
垢版 |
2017/10/15(日) 21:09:03.11ID:Yk/ODCzd0
scanf()
scanf()
scanf()
scanf()
scanf()
0759デフォルトの名無しさん (ワッチョイ 530f-GDEj)
垢版 |
2017/10/15(日) 21:13:13.74ID:Y+x8OcED0
超ド級初心者なんだけどおすすめの開発環境とかある?
0761デフォルトの名無しさん (ワッチョイ 530f-GDEj)
垢版 |
2017/10/15(日) 21:17:59.72ID:Y+x8OcED0
vs2017コンパイルの仕方がわからなかった(´・ω:;.:...
0763デフォルトの名無しさん (ワッチョイ 530f-GDEj)
垢版 |
2017/10/15(日) 21:22:30.69ID:Y+x8OcED0
ビルド押したんだけど反応がなかったんだ・・・
もっかい調べなおしてみる
ありがとう
0764デフォルトの名無しさん (ワッチョイ d108-MWTH)
垢版 |
2017/10/15(日) 21:51:37.18ID:DZC0OlhV0
>>757
建て増しする前の単純な仕様のscanfでさえ
%sしか攻撃できない空っぽ脳みそと
どうやってコミュしろというのか教えてくれ
0765デフォルトの名無しさん (ワッチョイ 5975-dPak)
垢版 |
2017/10/15(日) 21:56:59.72ID:kn6M0KEM0
>>763
プロジェクト作成しないとビルドできない
0767デフォルトの名無しさん (ワッチョイ fbe7-ceAT)
垢版 |
2017/10/16(月) 05:28:44.80ID:6Nh3McCV0
C言語知ってたらC++簡単に扱える?
0771デフォルトの名無しさん (ワッチョイ fbe7-ceAT)
垢版 |
2017/10/16(月) 06:42:19.28ID:6Nh3McCV0
まあ入出力でCとC++で違うのは解ってたけど本読んで書いてあったのはC++で書いて動かなかったら
最悪Cで書けば動かせるということは書いてあったな
0772デフォルトの名無しさん (ササクッテロロ Sp45-NqOW)
垢版 |
2017/10/16(月) 11:15:45.26ID:tZR41NVXp
つか、コマンドラインアプリで文字列受け取るのは、実行時引数だけで充分だろ。
0774デフォルトの名無しさん (ワッチョイ 09b3-NqOW)
垢版 |
2017/10/16(月) 14:21:36.48ID:JrEYnkdn0
対話型ツールなら、きちんと入力解析エンジン載せれや。
なんだよscanfってw
0775デフォルトの名無しさん (ワッチョイ fb8a-z1uI)
垢版 |
2017/10/16(月) 14:22:15.72ID:QsDGIdoW0
gccのワーニングで、「declared inside parameter list」これを無視したいです。
-Wではじまるオプションはなにを指定すればよろしいですか?

#pragma GCC diagnostic ignored "-W???
0782デフォルトの名無しさん (ワッチョイ fb8a-z1uI)
垢版 |
2017/10/16(月) 15:04:51.05ID:QsDGIdoW0
>>778
原因はわかっています。
構造体宣言を別のヘッダーで行っているにもかかわらず、
プロトタイプ宣言しているヘッダーより上に定義がないのが原因です

>>780
gcc -w ?
#pragma GCC diagnostic ignored "-w" でしょうか?
■ このスレッドは過去ログ倉庫に格納されています