C言語なら俺に聞け 145

■ このスレッドは過去ログ倉庫に格納されています
2018/02/19(月) 22:13:58.98ID:9/te2eSJ0
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言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2018/04/07(土) 19:07:44.77ID:jn0jIz6fd
まず、%2cは必ず「ブランク*」(*は任意の1文字)になる。
その上で整形用のブランクはprintfを分けて、
ブランク以外の文字とかで試してみろ。
2018/04/07(土) 21:25:17.61ID:I35+hkP6a
>>745
アセンブラからきたわいCの楽さに歓喜
797デフォルトの名無しさん
垢版 |
2018/04/07(土) 21:49:40.43
Visual BasicとかPerlとかから入った自分としては、
Cのほうが簡単に書ける場面もあれば
VBSやVBAがいい場面もあればPerlがいい場面もあって
要はどの言語でも楽しく書ければそれでええやん
2018/04/08(日) 06:56:45.64ID:oETTfDn00
ワイはbash + sed + cの三点セットや
2018/04/09(月) 19:49:06.28ID:bmGQy2qQ0
>>787
こんなの試してみたら分かったりしない?(\nは改行)
printf("%c\n",'a');
printf("%1c\n",'a');
printf("%2c\n",'a');
printf("%3c\n",'a');
printf("%4c\n",'a');
printf("%5c\n",'a');
2018/04/09(月) 20:21:36.79ID:qxDYyi6TH
一切出てこない質問者の相手はいらんだろ
801デフォルトの名無しさん (ブーイモ MMe7-64l2)
垢版 |
2018/04/15(日) 15:16:14.29ID:iG9vZW44M
上の写真を見る限りjが増えたタイミングでprintfで改行コード入れてるっぽいけどそれならiのforが終わったタイミングで改行コード入れれば動くんじゃないですか?
なぜiが8までしか回さないのかわからないですが…
802デフォルトの名無しさん (ワッチョイ 93ab-ycE0)
垢版 |
2018/04/15(日) 15:38:09.01ID:MyboI2lC0
しょーもない質問ですいません

vs2017で勉強してるど素人なんですが
コードをミスして修正しようとすると文字が上書きされて
文字を挿入できないん時があるんですが、
なぜでしょうか?
803デフォルトの名無しさん
垢版 |
2018/04/15(日) 15:41:00.10
>>802
https://ja.wikipedia.org/wiki/%E6%8C%BF%E5%85%A5%E3%82%AD%E3%83%BC
2018/04/15(日) 15:42:04.62ID:CIuag2/D0
>>802
こっちで聞けよ

Visual Studio 2017 Part5
http://mevius.5ch.net/test/read.cgi/tech/1520336504/
2018/04/15(日) 15:50:05.64ID:ASLFteC6a
上書きモードに誤爆したろ
2018/04/15(日) 15:54:21.86ID:0gUBaoqj0
>>801
すまんが、どこに改行コードがあるのか、iが8までとは何の事か、
俺にはさっぱり読み取れねぇ
お前とは見えてる世界が違うようだ
807デフォルトの名無しさん
垢版 |
2018/04/15(日) 16:17:29.71
>>806
この程度読み取れないようじゃエスパーに向いてないよ

> どこに改行コードがあるのか
予想回答「int c=‘ ‘;」って改行コードですよね?
iが増えるたびに改行コードをprintしたいんですよね?

> iが8までとは何の事か
予想回答:すみません、jの間違いです!
2018/04/15(日) 16:20:53.00ID:LLURRdNlM
改行は'¥n'
' 'はスペース
2018/04/15(日) 16:30:24.50ID:bKUHpU4ed
>>806
大丈夫
おれもさっぱりわからん
2018/04/15(日) 19:02:55.57ID:+NxoeMlk0
C言語でのステートマシンの設計や、上手なコーディングについて
体系的に学べるお勧めの書籍やサイト教えて下さい。
2018/04/15(日) 19:08:40.56ID:+NxoeMlk0
連投で申し訳ないけど
この辺の技術ってC++勉強した方が身に付くのかな?
2018/04/15(日) 19:10:47.07ID:7zIgNBcs0
Cはライブラリが貧弱でほとんど自作しないといけない。
C++はその辺多少マシ。Boostとかあるし。
2018/04/15(日) 19:14:55.01ID:7zIgNBcs0
至極の名言教えてやるぜ。受け売りだけどな。
コードを効率的にしたり、最強の最適化だったりするそれが一番効くのは書かないことだ。
書くと何らかの負荷になる、コードもグチャグチャになる。
必要なことだけ書いて後は流れに任せるのが上達の道。
2018/04/15(日) 19:47:03.66ID:aZbHy3F9d
C++って言うほどライブラリ充実してるか?
2018/04/15(日) 19:59:11.25ID:+NxoeMlk0
うーん・・・人によって考え方が違うから正解なんてないし
2chのこのレスだけでは具体的な提示とか難しいよね

本当に必要な処理だけ書いてたら関数長くなって
見通し悪くなったりメンテし辛くなったりしない?
2018/04/15(日) 20:03:21.51ID:IgQGrpHk0
>>810
ない。
>>811
関係ない。

君は本質的な「プログラミングの腕前」を上達させる為に、体系的に学べる物を探しているんだろ?
ならそれは言語には全く関係ないことは分かるだろ。

そして、そんな物は今はない。なぜならプログラミングは今もまだ発展途上だから。
そもそも歴史が浅い。プログラミングには100年ほどの歴史しかないし、
プログラミング作法が学問として成立してからは50年ほどしか経ってない。
だから現在でも試行錯誤中なんだよ。
それは今更C#/C++/Javaがラムダを採用したことからも分かるだろ。
ラムダ自体はLispの昔からあった。
そしてこれらの言語はそれを知っていて不採用としたわけだが、
今更の方向転換=間違いを認めた、ということなんだよ。
まだそれくらいあやふやなものだって事。

勿論各自が「オレオレ流スーパーハッカー道」を上梓することは出来るのだけど、
実際そういう奴はいないようだ。

とはいえ、結果的に全ての言語が似たり寄ったりになってきているから、
これは成熟してきていることを意味する。
となると、今後は体系化されていくだろうし、そういうサイトや本が現れてきてもおかしくない。
今は>>813みたいな、一言集みたいなのしかないね。
https://xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com/
2018/04/15(日) 20:18:14.92ID:CIuag2/D0
>>814
C に比べたら...
って話だろ
2018/04/15(日) 20:22:19.20ID:vjxfJMST0
>>816
C++/C#/Java のラムダ式ってラムダ式じゃないと表現できない「何か」を表現する、というよりは、シンタックスシュガーとしてのラムダ式であることが不満です
2018/04/15(日) 20:26:36.28ID:IgQGrpHk0
>>818
> ラムダ式じゃないと表現できない「何か」
とは何?
俺の理解では、これは存在しない。ラムダ無しでもチューリング完全だったろ。
2018/04/15(日) 20:31:05.37ID:vjxfJMST0
>>819
Y コンビネーターとか、どうですか?
2018/04/15(日) 20:33:38.79ID:8Bp5iafSd
>>818
ラムダ式じゃないと表現できない何かって何さ
定義した所の環境を使った第一級オブジェクトなプロシージャではだめなのか?
2018/04/15(日) 20:35:56.05ID:IgQGrpHk0
>>820
すまんが俺はLisp使いではないから、それについては知らない。
ただ、それが本当に役に立つものなら、C++は数年後に採用するだろうね。
2018/04/15(日) 21:29:24.63ID:7zIgNBcs0
>>815
一応言っておくと関数分割も必要なら必要なこととして処理されるべき。
ちなみに関数分割したほうが限度はあるけどキャッシュに乗って早くなる。
2018/04/15(日) 23:30:02.09ID:sXJBpbWg0
この板でチューリング完全て言葉をみるとは思わなかった
2018/04/15(日) 23:59:29.91ID:L6Qt+I9Ha
だいたい、どう抽象化するのがええのかって話でチューリング完全は関係ないからねえ。
前提としてはそうでないとあかんかも知れんけど。
2018/04/16(月) 00:40:26.76ID:qQ0bjYjD0
抽象化については「オブジェクト指向」で今のところ決着してるだろ。
これを否定する見解や言語は無いと思うが。
2018/04/16(月) 04:32:33.72ID:94linQhp0
コンビネータでも実装するか?
2018/04/16(月) 23:38:04.25ID:qQ0bjYjD0
>>820
>>827
お前ら知ってるのならそのメリットを(出来れば具体的に)書いてみてくれないか?
一応Wiki読んだが、
> 明示的に再帰を書かずに再帰を実現する為に用いる事ができる。
> なお、一般にそういった言語では普通に再帰が使えるので、
> プログラミングにおいてはパズル的なテクニック以上の意味は無い。
> https://ja.wikipedia.org/wiki/%E4%B8%8D%E5%8B%95%E7%82%B9%E3%82%B3%E3%83%B3%E3%83%93%E3%83%8D%E3%83%BC%E3%82%BF
なら、いらねえし、採用されることはないと思うが。
2018/04/17(火) 00:06:31.67ID:gWiyCqxa0
>>828
その wikipedia の解説はちょっと本質からはずれている気がする
「明示的な識別子を含まないで再帰関数が記述できる」くらいか

ラムダ表現を採用している、というのなら不動点コンビネータくらいは記述できないといけないのではないか?
いいかえれば不動点コンビネータを表現できないラムダ表現は「何か大事な部分が欠けている」

ラムダ表現は理論的なモデル(計算可能性を論じるなど)として考案されたもので、実用とか効率とかからは遠く離れている
ラムダ表現を売りにする言語(lisp とか)ならともかく、C#/C++/Java のような実用・効率を求める言語で単に「ラムダ表現ができる」「簡潔だ」くらいの理由で採用されるのは、無目的に言語仕様を拡張しているという理由で個人的には不満

さらにはラムダ表現を老害フィルタがわりに使う者もいたりするが、そういうのには賛同しがたい
2018/04/17(火) 01:21:31.43ID:RhwG6Rqia
javascriptだとアリって気がするよな。
なぜかは知らんが。まあlisp感あるからか。
2018/04/17(火) 08:33:39.92ID:dXM64r3I0
javascriptにはなぜかオブジェクト指向が無いからな
コンビネータはC++には早晩実装されそうな気がする
2018/04/17(火) 09:37:19.33ID:tZLDyJo/0
C++やJavaはクラスベースのオブジェクト指向言語
JavaScriptはプロトタイプベースのオブジェクト指向言語
2018/04/17(火) 23:42:23.84ID:Yk52Q7IR0
>>829
今の仕様で不動点コンビネータが記述できるのかどうかは俺には分からないが、
焦点はその先で、「記述できたら何がうれしいのだ?」なのだと思うよ。
実用言語で重視されるのは当然「実用性」であって、「学術性」ではない。

逆に、実用性皆無なら、当該部分が削除された状態で採用されるべきだ。
例えばC#は意図的にインラインアセンブラを禁止している。
ヘルスバーグのインタビューがググッても出てこないのだが、心は、
「C#のコードならメンテできます」の為の必要知識量を抑えること、だった。
これは長期的に要員確保の難易度を下げ、結果的にメンテ性を上げる。
これも実用言語では重要だよ。
アメリカでPythonを使うのも、Python自体が良い言語だと思っている奴は皆無で、
「Pythonならみんな読めるし書けるから」だからね。
そのコードが10年以上使われることが分かっているのなら、
10年後に要員確保できない可能性がある言語を選択するのは間違いだし。

Cは、(時代的に無理ではあったが)何でもありの状態で、
文法は極めて簡単だが問題は中で何をやっているかで、読んでみなければ分からない。
「Cのコードならメンテできます」とか、簡単に言うのは無理だろ。
C#はイミフなコード構成(大体はCでも警告が出るもの)も禁止されており、
一応、エンジニアが「C#ならメンテできます」と言えることを目指している。
(上手く行っているとは言い難い部分もあるが)
酷い話だが、Javaは10年間全く進歩しないことによってこれを達成してしまっているし。

だから、話を戻すと、
実用言語においては実用性のある機能は取り入れるべきだが、
実用性がない機能は捨てられるべきなんだよ。
(大は小を兼ねる、多めに採用しとけ、ではない。同様に無駄に構文糖が多いのも問題)
今回ラムダが矮小化されて取り込まれているということなら、
取り込まれた部分は必要だと、切り捨てられた部分は不要だと判断されただけ。
勿論今後覆る可能性もあるけどね。
2018/04/17(火) 23:55:44.13ID:zXGef27d0
そういうのは自宅の壁に
2018/04/18(水) 00:05:44.11ID:0XfxQo2f0
>>833
>取り込まれた部分は必要だと、切り捨てられた部分は不要だと判断されただけ。
受動的な態度であればそうなるが、あえて私の感覚を述べるとすれば、

ラムダ式を C++/C#/Java(特にC++)に取り込む価値があったのか?
という点、C++ のラムダ式は operator()() で実現できるし、operator()() のシンタックスシュガーと考えてよい

シンタックスシュガーを全否定するわけではない
「ラムダ式」という偉大な名前に反して、実際にできることは一般的な「ラムダ式」のカバーする領域よりも狭くなっているのを「不満」と感じているだけなのかもしれない
2018/04/18(水) 01:03:16.68ID:fAoQEHU80
>>835
> C++ のラムダ式は operator()() で実現できるし、operator()() のシンタックスシュガーと考えてよい
一応それが禿がラムダをC++に採用するのに反対している理由だったと聞いたが、
結果的には折れたんだろ。
昨今は「出来ること」よりも「ソースコードの見やすさ」が重視されているし、妥当だと思うが。
比較すると、

1. そもそも operator()()(ファンクタ)では関数に見えない。これが最大のガン。
2. C/C++は階層記述能力が無く、関数内関数が出来ない。このため、
 局所的に関数ポインタを使いたいだけの場合でも上位階層に関数を記述するしかなく、
 結果的にその関数は他からも見える(使える)状態になってしまう。
 匿名関数であれば、そこでしか使っていない事を文法的に保証できる。
3. ファンクタだとインスタンス変数は必ずコピーすることになる。
 ラムダだとおそらく直接掴める場合もあり、この場合はケチれる。
 (ただしこれは実装による)

だから関数内関数(クロージャ付き、最低限その階層の変数は見えるもの=GCC拡張の仕様でいい)があれば、
1,2,3とも達成できるし、要らなかったかな、とも思う。
というか、C/C++とも、関数内関数(階層)は無しで押し切るつもりかよー、とは思う。
ラムダよりこっちの方が必要な気がするのだが。
837デフォルトの名無しさん (スップ Sd1f-CG16)
垢版 |
2018/04/18(水) 02:30:28.15ID:vVNlUpo0d
Cとシェルスクリプトだけで生きていきたいんですが食べていけますか?
またそういった分野らOSSコミッター以外でありますでしょうか?
2018/04/18(水) 02:40:14.81ID:whM0Cl8U0
あるとするなら組込系かな
回路図とアセンブラは出来るの?
839デフォルトの名無しさん (スップ Sd1f-CG16)
垢版 |
2018/04/18(水) 03:38:30.78ID:5PSc4Ve9d
>>838
ありがとうございます
840デフォルトの名無しさん
垢版 |
2018/04/18(水) 06:50:02.81
今どき組み込み系もPythonできなきゃやっていけない時代よ
2018/04/18(水) 06:58:40.17ID:JUjvxXNW0
組み込みは圧倒的にC言語が多い
842デフォルトの名無しさん
垢版 |
2018/04/18(水) 07:26:37.24
>>841
ツール類は一昔前ならPerl/Ruby/TTL(TeraTerm)/VBA、今はPythonが必須だよ
2018/04/18(水) 07:55:12.06ID:JUjvxXNW0
ツール類ってなんだよ

組み込みの話をしてるの
機器内部のファームウェア
844デフォルトの名無しさん
垢版 |
2018/04/18(水) 08:03:28.70
>>843
組み込み系開発者がCソースだけいじってればいいと思ってんのか
2018/04/18(水) 08:06:09.63ID:JUjvxXNW0
大部分の組み込みだとYES
他の言語など使わない
2018/04/18(水) 08:07:13.14ID:JUjvxXNW0
C言語以外が必要なのは大規模な物だけ
2018/04/18(水) 08:15:48.27ID:Acg84ZKa0
>>837
そういうことはプログラム板ではなくプログラマ板で聞いてこい
2018/04/18(水) 08:30:18.84ID:8g/N/Bw3a
>>844
いい。
2018/04/18(水) 08:59:26.18ID:whM0Cl8U0
最悪、シーケンサ(PC)でラダー図とアセンブラ触ってりゃ
行けるでしょ。
MELSEC-iQ-RとかはC言語で書く(OSはVxWorks)

ま所詮は他人の人生である
2018/04/18(水) 09:49:03.96ID:bX/oR0u10
Cでさえオーバースペックでアセンブラという場合まである
2018/04/18(水) 09:57:01.68ID:8LhMtFC1d
アセンブラでさえオーバースペックでバイナリエディタという場合まである
2018/04/18(水) 10:32:00.37ID:MgMoBevw0
>>851
参考までにアセンブラがオーバースペックなマイコン(SoC)って何処の製品か教えて
2018/04/18(水) 10:40:41.42ID:0P72JrSeM
あるとすればIMSAIとかだろうけど、流石にネタだろ
854デフォルトの名無しさん (アウアウカー Sa47-p2KG)
垢版 |
2018/04/18(水) 11:16:51.20ID:gg2GabAwa
プログラムを動かすボードが貧弱でも開発は豪華なPCでやるんだから最低でもアセンブラ使えるようにはするだろう。
作ったばかりのCPUで他のCPUとの互換性が全くなくアセンブラもまだない、なんていう特殊な状況でない限りは。
2018/04/18(水) 11:45:29.90ID:8g/N/Bw3a
マウンティング頑張れ
2018/04/18(水) 12:36:20.65ID:8LhMtFC1d
ごめんなさい
ネタです
857デフォルトの名無しさん (アウアウカー Sa47-p2KG)
垢版 |
2018/04/18(水) 12:57:38.66ID:gg2GabAwa
mount /dev/sda
2018/04/18(水) 23:26:56.70ID:1I0zrtwW0
組込み屋だけど会社によって状況違うんだなとしみじみ
2018/04/18(水) 23:58:14.05ID:BI6oaZDa0
この頃は組み込みって言っても Linux が動いちゃうような小さいボードあるしな。
SDメモリに平気で何Gもデータ入れちゃったりもできるし。なんとういか、時代は変わったよな。
昔は2KBと4KBのROMに詰め込むためにビット単位で削っていたもんな。
2018/04/19(木) 00:35:24.22ID:q2wFspbLM
組み込みって昔から小っちゃいのから馬鹿デッカいものまであるから一括りにするのが間違い
2018/04/19(木) 05:33:01.08ID:IwtdBTTY0
なんかネタレスで返されてるな
とあるLEDアレイの案件では並列に重きを置き
CPUあたりの処理能力は思いっきり低い
なんてのがあったんだが
862デフォルトの名無しさん (アウアウカー Sa43-9Dln)
垢版 |
2018/04/19(木) 12:39:01.79ID:oHD1faOFa
あまりに面倒ならハードウェアで回路追加して解決
2018/04/19(木) 22:41:42.50ID:Uac+F3+Td
あんまりそれすると、またハード屋に小言言われるぞ。
864デフォルトの名無しさん (ワッチョイ 76e7-l7dU)
垢版 |
2018/04/19(木) 23:07:31.74ID:p3OUOmjs0
int a[] = {0,1,2,3};
char b =0;
scanf("%d",&b);

printf("%d",a[b]);
知恵袋でこんな質問があって俺も不思議に思って持ってきたんだけど
色んな数字入れても0になるとか書かれてたんだけどこれどうなってるの?
2018/04/19(木) 23:17:20.36ID:/9NYPZwG0
>>864
自分で試してみた?
866デフォルトの名無しさん (ワッチョイ 76e7-l7dU)
垢版 |
2018/04/19(木) 23:21:55.11ID:p3OUOmjs0
>>865
100入れてみたら3が返ってきたw
2018/04/19(木) 23:22:54.38ID:b+0fRBYw0
>>864
>色んな数字入れても0になるとか
ならない
https://ideone.com/Itq7px
2018/04/19(木) 23:23:39.27ID:XF7JHHHf0
エンディアンによるような気もするがー

%d は int の大きさを持った器のポインタを要求してるのに
char の大きさの器を渡してるから どうなろうがしったこっちゃない鼻から悪魔系の動作
869デフォルトの名無しさん (ワッチョイ 76e7-l7dU)
垢版 |
2018/04/19(木) 23:29:53.26ID:p3OUOmjs0
これがエラーにならず動いてしまうという悪魔のCの動作か
2018/04/19(木) 23:30:32.30ID:/9NYPZwG0
char b[4] = {0};
scanf("%d",&b[0]);
printf("%d %d %d %d\n",b[0],b[1],b[2],b[3]);

これをVCとGCCで試してみた
結果は配列先頭要素に代入され、残りは0のままだった
2018/04/19(木) 23:31:48.87ID:x2EYL8xQ0
>>867
bの型がcharなのが肝なんだからそこは間違えるなよ
2018/04/19(木) 23:33:18.23ID:XF7JHHHf0
>>870
入力で負の値を渡すと…
2018/04/19(木) 23:33:42.76ID:lwH23MPfa
intだからな
2018/04/19(木) 23:36:41.07ID:/9NYPZwG0
なるほど、入力値が小さいときは、
後ろの配列が変わってないかのように見えるだけって事か
2018/04/19(木) 23:38:11.10ID:b+0fRBYw0
>>868
char 配列の大きさを表す変数が int であっても、あるいはそうでなくても、それは関係ないのでは?
2018/04/19(木) 23:38:53.72ID:XF7JHHHf0
>>874
そそ 0でフィルしてるから問題ないようにみえるけど、
0 以外でフィルしてやると副作用おこしてるのがわかるよ
2018/04/19(木) 23:39:18.81ID:b+0fRBYw0
>>871
あ!
2018/04/19(木) 23:40:18.78ID:XF7JHHHf0
>>875
printf ではなく scanf のフォーマットでの %d 指定に char 変数のポインタを渡してる話よ?
2018/04/19(木) 23:46:08.02ID:b+0fRBYw0
>>878
やっと気が付いた…
>>877
2018/04/20(金) 00:50:00.05ID:G/kLZxdya
警告って出ないもん?
2018/04/20(金) 01:57:12.33ID:wjKqEKEv0
関数の引数はスタックサイズに丸められるよ
2018/04/20(金) 02:04:42.67ID:G/kLZxdya
ポインタだしなあ
2018/04/20(金) 06:13:59.91ID:EDYH6GYd0
>>880
GCC だと -Wall を指定すれば警告が出るね。

書式 %d に対して *char の引数 [-Wformat]
配列の添字が char 型 [-Wchar-subscripts]
2018/04/20(金) 06:51:33.68ID:9tWrHk9l0
>>881
この1行にアホが詰まってる
会話の内容も実際の動作も用語もわかってないっていう
2018/04/20(金) 07:58:37.73ID:eEDtLY6e0
アホな点をいくつ見つけられるかで
各自のアホ度を測定できるな
2018/04/20(金) 09:31:45.52ID:OLFb+zqBd
それがデバッグと言われる行為だろ?
2018/04/20(金) 10:21:13.71ID:xd9k5+f1M
脳がwormhole だらけなんでしょ
888デフォルトの名無しさん (ワッチョイ 76e7-l7dU)
垢版 |
2018/04/20(金) 14:21:22.42ID:33OB1hDw0
char *line;
scanf("%s", &line);//dogが入る
if(line=="dog")
{
printf("dogですよ");
}
これってなんでdogと合わないん?
2018/04/20(金) 14:26:31.37ID:UQRLXIIQ0
>>888
scanf で受けとる変数をchar型の配列にしましょう
2018/04/20(金) 14:30:58.92ID:OLFb+zqBd
>>888
line=="dog" という式は strcmp関数にしましょう
2018/04/20(金) 14:31:04.87ID:JZAZQDTS0
文字列の比較は == ではなく、strcmp 等の比較関数をつかいましょう
2018/04/20(金) 15:15:01.27ID:uy6ZTS8Ap
アドレスの一致を比較してるからじゃね?
2018/04/20(金) 15:17:13.71ID:RdXrGqPUd
C言語はプロ向きの言語
「とりあえず動かしてみる」
とかいう用途には向かない
入門書とかできちんと勉強しよう
2018/04/20(金) 15:20:02.90ID:JZAZQDTS0
>char *line;
>scanf("%s", &line);
この2行に色々な罠や誤りが仕込まれてるな。
Cで躓くであろう、ポインタと配列、文字と文字列周辺


(セキュリティや入力のオーバーランは考慮せず簡便なので書くと)
char line[256];
scanf("%s", line);
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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