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言語なら俺に聞け 142
http://mevius.2ch.net/test/read.cgi/tech/1502364083/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 143
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ b375-rVGZ)
2017/10/27(金) 21:28:08.20ID:pAogLeJi0311デフォルトの名無しさん (ワッチョイ 7fa2-Ud84)
2017/11/14(火) 17:46:40.44ID:CqmbHxm/0 %lfじゃなくて?
312デフォルトの名無しさん (ワッチョイ ffe7-y/Ph)
2017/11/14(火) 18:28:10.04ID:ijEEO/Co0 >>311
間違えたそれだ
間違えたそれだ
313デフォルトの名無しさん (ワッチョイ df8a-AcTI)
2017/11/14(火) 18:42:01.06ID:fdj+YHIz0 long double は別物として実装していない?
314片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd9f-dwJZ)
2017/11/14(火) 18:56:38.89ID:Qnc8WtYFd scanfでは、floatが%fで、doubleが%lfだ。printfでは区別がない。
315デフォルトの名無しさん (ワッチョイ 5f93-csDI)
2017/11/14(火) 19:35:59.33ID:ZWJmr3O/0 cでUTF-8のファイル読み書きとデータの取り扱い方が分からないです
もしかしてできないのかな?
もしかしてできないのかな?
316デフォルトの名無しさん (ワッチョイ 5f76-Ud84)
2017/11/14(火) 19:57:38.61ID:mdecs3M50 調べるとすぐにwikipediaが出てきたよ
https://ja.wikibooks.org/wiki/C%E8%A8%80%E8%AA%9E/%E6%96%87%E5%AD%97%E3%81%A8%E6%96%87%E5%AD%97%E5%88%97#Unicode.E6.96.87.E5.AD.97.E3.82.BB.E3.83.83.E3.83.88
文字を「L"」で囲むとその文字を表現するワイド文字型の数値となる
Unicode文字セットでは、標準ライブラリの関数を使う前にロケール(地域)を設定する必要があり、また、Unicode用の関数を使う必要もある
// wchar_t型
wchar_t wc = L'a'; // wchar_t型の変数wcに文字L'a'を格納
_wsetlocale(LC_ALL, L""); // ロケール(地域)を設定する
wprintf(L"変数wcに格納された文字は%c", wc); //wcを文字として表示
wprintf(L"変数wcに格納された数値は%4x", wc); //wcを数値として表示
https://ja.wikibooks.org/wiki/C%E8%A8%80%E8%AA%9E/%E6%96%87%E5%AD%97%E3%81%A8%E6%96%87%E5%AD%97%E5%88%97#Unicode.E6.96.87.E5.AD.97.E3.82.BB.E3.83.83.E3.83.88
文字を「L"」で囲むとその文字を表現するワイド文字型の数値となる
Unicode文字セットでは、標準ライブラリの関数を使う前にロケール(地域)を設定する必要があり、また、Unicode用の関数を使う必要もある
// wchar_t型
wchar_t wc = L'a'; // wchar_t型の変数wcに文字L'a'を格納
_wsetlocale(LC_ALL, L""); // ロケール(地域)を設定する
wprintf(L"変数wcに格納された文字は%c", wc); //wcを文字として表示
wprintf(L"変数wcに格納された数値は%4x", wc); //wcを数値として表示
317デフォルトの名無しさん (ササクッテロレ Sp33-1iEE)
2017/11/14(火) 20:29:12.24ID:1+/iXMbtp だから、文字セットはライブラリの範疇だからC言語スレで聞くなよ。
おまえが使ってるコンパイラのスレにでも行け。
おまえが使ってるコンパイラのスレにでも行け。
318デフォルトの名無しさん (ワッチョイ df7f-TPjW)
2017/11/14(火) 20:29:48.26ID:M89KBFlu0 何したいかによるんじゃね
素でもそれなりには扱えるし、不十分ならライブラリ探してもいい
どうしても無理なら慣れた文字コードに変換すればいいけど、こっちは一部文字情報が欠落するかもね
素でもそれなりには扱えるし、不十分ならライブラリ探してもいい
どうしても無理なら慣れた文字コードに変換すればいいけど、こっちは一部文字情報が欠落するかもね
319デフォルトの名無しさん (ワッチョイ 5f93-csDI)
2017/11/14(火) 20:58:01.97ID:ZWJmr3O/0320デフォルトの名無しさん (ワッチョイ 5f02-TYjb)
2017/11/15(水) 06:11:40.94ID:1fEpam2j0 「配列へのポインタ」で嘘教えてるクソサイト
321デフォルトの名無しさん (ワッチョイ 7f87-ckd2)
2017/11/15(水) 08:01:18.30ID:2LyFVpmC0 エンコーディングにかかわらず、ただのバイト列だからchar*でいい
322ビル・ジョブス (ワッチョイ 5fb3-bJtK)
2017/11/15(水) 09:06:23.81ID:sfEUfVZe0 配列名は変更できない左辺値
323デフォルトの名無しさん (ワッチョイ 5f8a-gxuN)
2017/11/15(水) 10:37:31.14ID:Iv8iuDMF0 次のC規格でそろそろ文字を扱う関数全てunsigned charに変更してくれないかな
utf8でもsjisでもだけど1バイト目の判定でいちいちキャストするのが不毛すぎる
賢明なプログラマならcharなどというプリミティブ型をそのままの名前で使わずちゃんと
typedef char str_t;
とかしてるはずだし、してない愚者はもうシステムもろとも切り捨てていいだろう
-1が欲しいために結局intに拡張されるんだからcharの時点では符号は不要なんだよ
utf8でもsjisでもだけど1バイト目の判定でいちいちキャストするのが不毛すぎる
賢明なプログラマならcharなどというプリミティブ型をそのままの名前で使わずちゃんと
typedef char str_t;
とかしてるはずだし、してない愚者はもうシステムもろとも切り捨てていいだろう
-1が欲しいために結局intに拡張されるんだからcharの時点では符号は不要なんだよ
324デフォルトの名無しさん (ササクッテロラ Sp33-1iEE)
2017/11/15(水) 10:45:30.80ID:5eRwFnaIp C#みたいにbyte型作れば?
それかマルチバイト型
それかマルチバイト型
325デフォルトの名無しさん (ワッチョイ df23-uZPj)
2017/11/15(水) 18:45:36.23ID:/fqUZ3V60 >>323
ハゲドゥ
ハゲドゥ
326デフォルトの名無しさん (ワッチョイ ffa5-ySnM)
2017/11/15(水) 20:52:19.99ID:edi6IXQo0 >utf8でもsjisでもだけど1バイト目の判定でいちいちキャストするのが不毛すぎる
いまどきそういうencoding依存のコードをそんなに頻繁に書いているんだとしたら
それ自体が不毛な気も。
いまどきそういうencoding依存のコードをそんなに頻繁に書いているんだとしたら
それ自体が不毛な気も。
327デフォルトの名無しさん (アウアウアー Sa16-0x9U)
2017/11/16(木) 10:46:07.94ID:QxSeP1oQa なんのために皆cやってるん?
328デフォルトの名無しさん (ササクッテロラ Spd1-lqMT)
2017/11/16(木) 10:47:45.24ID:sipg0WT3p 生活の為だ。
329デフォルトの名無しさん (ブーイモ MMe5-bIo0)
2017/11/16(木) 12:40:47.00ID:jvRl/N31M 文句たれてる暇があるなら1バイト目判定関数でもつくれば
330デフォルトの名無しさん (アウアウカー Sa49-GczB)
2017/11/16(木) 16:46:03.46ID:ExCdIANwa ファイルサイズ測定
↓
そのファイルサイズ領域を動的確保
↓
そこにutf-8の文字列を順次格納
みたいなプログラム組んでるんだけど
ファイルサイズ/sizeof(wchar_t)と中身の文字の数って等しくないの?
↓
そのファイルサイズ領域を動的確保
↓
そこにutf-8の文字列を順次格納
みたいなプログラム組んでるんだけど
ファイルサイズ/sizeof(wchar_t)と中身の文字の数って等しくないの?
331片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd22-EXIO)
2017/11/16(木) 16:52:10.55ID:1Qzf60whd UTF-8をそのまま扱うんなら、/sizeof(char)じゃね?
UTF-16やUTF-32に変換したならデータサイズが違うけど。
UTF-16やUTF-32に変換したならデータサイズが違うけど。
332デフォルトの名無しさん (ワッチョイ a9ea-wRfy)
2017/11/16(木) 16:54:06.14ID:Gq05ZlN50 UTF-8 は データサイズから文字数を求めることはできない
333デフォルトの名無しさん (ワッチョイ a193-GczB)
2017/11/16(木) 17:01:45.21ID:FIH9Q68l0 やっぱり1文字づつ読み込んでって文字数カウントするしかないか
334デフォルトの名無しさん (ワッチョイ a9ea-wRfy)
2017/11/16(木) 17:06:37.43ID:Gq05ZlN50335デフォルトの名無しさん (ワッチョイ a193-GczB)
2017/11/16(木) 17:15:42.23ID:FIH9Q68l0 >>334
そうします
そうします
336デフォルトの名無しさん (ワッチョイ 86e7-0Cia)
2017/11/16(木) 17:29:40.48ID:NqJtZOMo0 暇つぶしで気になったんだけどC言語でもOSは作れるだよな、でも制御とかでコンピューターをちゃんと理解してないとやっぱ作れない?
337片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd22-EXIO)
2017/11/16(木) 17:45:35.36ID:1Qzf60whd FreeDOS、Linux、ReactOSなどのオープンソースなOSは、ソースが見られるから参考にするといい。
例えば、OSで並列処理をしたい場合は実際のCPUの知識が必要になるし、OSをCD-ROMからインストールしたい場合は、CD-ROMのファイルシステムの知識が必要になる。
OSを便利にしたいなら、それなりの知識が必要になるのさ。
例えば、OSで並列処理をしたい場合は実際のCPUの知識が必要になるし、OSをCD-ROMからインストールしたい場合は、CD-ROMのファイルシステムの知識が必要になる。
OSを便利にしたいなら、それなりの知識が必要になるのさ。
338片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd22-EXIO)
2017/11/16(木) 17:50:48.01ID:1Qzf60whd モダンなOSは巨大化・複雑化しているから、一人ですべてを把握するのは難しい。
必要な機能を分割統治して、ライブラリなどによってブラックボックスとして実装するのが一般的。
必要な機能を分割統治して、ライブラリなどによってブラックボックスとして実装するのが一般的。
339デフォルトの名無しさん (ワッチョイ 258a-axvV)
2017/11/16(木) 18:09:46.26ID:j+aaxsF+0340デフォルトの名無しさん (ブーイモ MMcd-axvV)
2017/11/16(木) 18:10:16.42ID:NJ9DPXHtM モダンでなくても、C単体ではシステムコールとCPUステータスに
関わる部分が書けないので、100%は不可能。
asm文とか使うなら別だけど。
関わる部分が書けないので、100%は不可能。
asm文とか使うなら別だけど。
341片山博文MZ ◆T6xkBnTXz7B0 (ワッチョイ f9b3-EXIO)
2017/11/16(木) 18:10:19.85ID:++5Qg6gN0 なお、OSで商売したいなら、著作権のトラブルをクリアしないといけない。
マイクロソフトやグーグルのようにOSを売るのは至難の技だ。
マイクロソフトやグーグルのようにOSを売るのは至難の技だ。
342片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd22-EXIO)
2017/11/16(木) 18:29:05.66ID:1Qzf60whd パソコン向けじゃなければ、日本企業でもOSを開発しているところはある。
どんなOSを開発したい?
どんなOSを開発したい?
343デフォルトの名無しさん (ワッチョイ 6e81-S+5X)
2017/11/16(木) 18:42:10.01ID:lNSovIGo0 OS劇場っぽいやつ
344デフォルトの名無しさん (ワッチョイ a193-GczB)
2017/11/16(木) 20:19:28.30ID:FIH9Q68l0 あとメモリ上に読み込んだバイナリデータをwchar_tの文字列に変換することは可能でしょうか?
345デフォルトの名無しさん (ワッチョイ 86e7-0Cia)
2017/11/16(木) 20:33:55.78ID:NqJtZOMo0 ただC言語の本にアセンブリ言語またC言語でもOS作成可能ってあったから気になっただけ
他の言語もコンパイルして機械語にするからC言語も間接的な言語しかないのかなって疑問に思っただけ
他の言語もコンパイルして機械語にするからC言語も間接的な言語しかないのかなって疑問に思っただけ
346デフォルトの名無しさん (ワッチョイ 41b3-wRfy)
2017/11/16(木) 21:44:00.25ID:lLXMegrc0347デフォルトの名無しさん (ワッチョイ 5e7f-tJ16)
2017/11/16(木) 22:16:50.50ID:SDKqgqGy0 嘘ついてるかもだけど、wchar_tのたぐいって、使うとはまる奴じゃなかった?
文字列はcharオンリーな今日この頃。
cpu限定すれば、変換はいけるんじゃない?
文字列はcharオンリーな今日この頃。
cpu限定すれば、変換はいけるんじゃない?
348デフォルトの名無しさん (ワッチョイ 258a-axvV)
2017/11/16(木) 22:50:06.96ID:j+aaxsF+0 ワイド文字だと場合によってはエンディアンを気にする必要があるのと
結局>>334は避けられないあたりを忘れなければハマることはないかと
結局>>334は避けられないあたりを忘れなければハマることはないかと
349デフォルトの名無しさん (ワッチョイ aee9-cTf1)
2017/11/16(木) 23:02:19.01ID:53UzEJx90 OSのコードを書くのってC言語のインラインアセンブリが使われてるんじゃないの?
350デフォルトの名無しさん (ワッチョイ 8203-Eq1o)
2017/11/17(金) 03:13:34.00ID:HNipYc2I0 インラインなんかほとんど使わない
アセンブラが必要なところはガチのアセンブラを使う
量にして全体の数%ってとこ
アセンブラが必要なところはガチのアセンブラを使う
量にして全体の数%ってとこ
351割 ◆c9Xyadm.dk (ワッチョイ 259d-RuWE)
2017/11/17(金) 08:21:02.54ID:5vMCLRTs0 フリーのOS作るため勉強するよ
352デフォルトの名無しさん (アウアウカー Sa49-DesR)
2017/11/17(金) 08:39:11.50ID:Noghda3Sa >>339
あれかなり良いけどフロッピー使うし作るOSもかなり独特だからモダンな感じでもう一冊くらい書いて欲しい
あれかなり良いけどフロッピー使うし作るOSもかなり独特だからモダンな感じでもう一冊くらい書いて欲しい
353デフォルトの名無しさん (ワッチョイ 919f-8CrJ)
2017/11/17(金) 23:24:01.69ID:mCQOvNmw0354デフォルトの名無しさん (ワッチョイ 919f-8CrJ)
2017/11/17(金) 23:32:51.13ID:mCQOvNmw0 >>336
OS作れるどころかOSを書くために作られたような言語がCだよ。UNIXな。
OS作れるどころかOSを書くために作られたような言語がCだよ。UNIXな。
355デフォルトの名無しさん (ワッチョイ 919f-8CrJ)
2017/11/17(金) 23:36:03.75ID:mCQOvNmw0 >>342
超漢字はPCで・・・
超漢字はPCで・・・
356デフォルトの名無しさん (アウアウカー Sa49-GczB)
2017/11/18(土) 01:14:51.20ID:rocDtfxqa mallocとかcallocでNULLが帰ってくる原因が分からない
メモリも十分あいてるしfree忘れもないのに
メモリも十分あいてるしfree忘れもないのに
357デフォルトの名無しさん (ワッチョイ 41b3-wRfy)
2017/11/18(土) 01:20:58.17ID:j81pJ1Fd0 要求している大きさが 0 とか?
358デフォルトの名無しさん (アウアウカー Sa49-GczB)
2017/11/18(土) 01:23:12.16ID:SBD2pOIJa >>357
流石に0ってことはないと思うわ
流石に0ってことはないと思うわ
359デフォルトの名無しさん (アウアウカー Sa49-GczB)
2017/11/18(土) 01:40:38.42ID:bkH0AyDYa どこかでバッファオーバーランしてるのかなあ
360デフォルトの名無しさん (ブーイモ MM22-6+Yk)
2017/11/18(土) 01:54:02.41ID:ravPC5RbM 0 allocでもnullは返さないはず
361デフォルトの名無しさん (ワッチョイ a980-axvV)
2017/11/18(土) 02:00:44.06ID:xg8+Glw40 perrorくらいしてから書け
362デフォルトの名無しさん (ワッチョイ e92b-0hG5)
2017/11/18(土) 03:52:04.95ID:V3PmucT60 おれの昔使ってたシステムでは、free忘れじゃなくて、mallocしたアドレスを2度freeしたり、もしくはmallocとは全然関係無いアドレスをfreeすると、
その後のmallocでおかしな動作をすることがあった
その後のmallocでおかしな動作をすることがあった
363デフォルトの名無しさん (ワッチョイ 919f-8CrJ)
2017/11/18(土) 06:02:16.21ID:4FIhP4xR0 >>358
本当か?
本当か?
364デフォルトの名無しさん (ワッチョイ 25d6-Eq1o)
2017/11/18(土) 06:22:35.45ID:mIICZMYh0365デフォルトの名無しさん (ワッチョイ 02b3-ZIVp)
2017/11/18(土) 07:00:43.85ID:ScUjvH+z0 >>361
それ関係ないやろ
それ関係ないやろ
366デフォルトの名無しさん (ワッチョイ a193-GczB)
2017/11/18(土) 09:37:24.12ID:N5k0nP0W0 >>362
windowsなんだけど可能性あるの
windowsなんだけど可能性あるの
367デフォルトの名無しさん (ワッチョイ 25d6-Eq1o)
2017/11/18(土) 09:47:18.69ID:mIICZMYh0 ゲイツOSかどうかには関係ねえぞ
malloc/freeが空き領域をどのように管理しているかの実装の問題だ
malloc/freeが空き領域をどのように管理しているかの実装の問題だ
368デフォルトの名無しさん (スッップ Sd22-9aoE)
2017/11/18(土) 11:15:25.02ID:QN3bDN6ad Winなら2重freeで死ぬんじゃね
369デフォルトの名無しさん (アウアウカー Sa49-GczB)
2017/11/18(土) 11:27:25.57ID:rocDtfxqa 2重freeだとその時点でエラーはかないの
370デフォルトの名無しさん (ワッチョイ 02b3-ZIVp)
2017/11/18(土) 11:56:53.68ID:ScUjvH+z0371デフォルトの名無しさん (ワッチョイ a193-GczB)
2017/11/18(土) 12:20:10.83ID:N5k0nP0W0 解決した
不定のポインタに対して代入
変なとこ書き換えたせいでmalloccallocに失敗したみたい
不定のポインタに対して代入
変なとこ書き換えたせいでmalloccallocに失敗したみたい
372デフォルトの名無しさん (ワッチョイ e18a-uXfc)
2017/11/18(土) 16:45:23.67ID:LYf4SJAt0 よかったな鼻から鼻毛が出る程度で
373デフォルトの名無しさん (ワッチョイ a193-GczB)
2017/11/18(土) 20:07:48.43ID:N5k0nP0W0 また別の問題が・・・
メモリ上にある時は問題ないのにwprintfで表示するときに文字化けする
メモリ上にある時は問題ないのにwprintfで表示するときに文字化けする
374デフォルトの名無しさん (ワッチョイ 919f-8CrJ)
2017/11/18(土) 20:09:57.58ID:4FIhP4xR0 >>373
「問題ない」とは?何で確認した?
「問題ない」とは?何で確認した?
375片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd22-EXIO)
2017/11/18(土) 20:10:41.39ID:QiNK1qRtd setlocaleした?
376デフォルトの名無しさん (ワッチョイ a193-GczB)
2017/11/18(土) 20:37:46.90ID:N5k0nP0W0377片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd22-EXIO)
2017/11/18(土) 20:39:12.15ID:QiNK1qRtd ideoneに貼ってよ。
378デフォルトの名無しさん (ブーイモ MM22-6+Yk)
2017/11/18(土) 20:49:06.97ID:ravPC5RbM コンソールのロケールは?
379デフォルトの名無しさん (ワッチョイ a193-GczB)
2017/11/18(土) 20:54:11.61ID:N5k0nP0W0 >>378
chcp 65001をsystem関数で実行してる
chcp 65001をsystem関数で実行してる
380デフォルトの名無しさん (ワッチョイ e92b-0hG5)
2017/11/18(土) 21:10:22.92ID:V3PmucT60 setlocaleの引数は?
381片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd22-EXIO)
2017/11/18(土) 21:47:57.26ID:QiNK1qRtd system関数で出来る子プロセスは、別プロセスだから、現在の画面出力には影響しないと思う。
382デフォルトの名無しさん (ワッチョイ a193-GczB)
2017/11/18(土) 21:48:38.17ID:N5k0nP0W0 解決した
関数の中で宣言したwchar_t の配列buff[20]のポインタを返してそれを表示してたんだけどそれがまずかったみたい
スコープから抜けた瞬間に解放されちゃうみたい
無知だったわ申し訳ない
関数の中で宣言したwchar_t の配列buff[20]のポインタを返してそれを表示してたんだけどそれがまずかったみたい
スコープから抜けた瞬間に解放されちゃうみたい
無知だったわ申し訳ない
383デフォルトの名無しさん (ワッチョイ a193-GczB)
2017/11/18(土) 21:49:45.49ID:N5k0nP0W0 buffの中身をmallocで確保した所にコピーしたのを返すことにしました
384デフォルトの名無しさん (ワッチョイ a19f-RjUU)
2017/11/18(土) 23:02:18.25ID:euoYf0NO0385デフォルトの名無しさん (ワッチョイ 419f-Eq+G)
2017/11/19(日) 03:54:32.58ID:+NeHX1+n0 char* hoge(){
char buff[20];
strcpy(&buff[0], "何らかの処理");
return &buff[0];
}
int main(int argc, char* argv[]){
char* str = hoge();
printf("%s\n", str);
return 0;
}
多分、こうなってたんじゃないか?
配列は、自分で管理すべきだよねー。
void hoge(char* const str){
strcpy(&str[0], "何らかの処理");
return 0;
}
int main(int argc, char* argv[]){
/* char str[20]; */
char* ptr = nul;
/* ptr = &str[0]; */
ptr = (char*)malloc(sizeof(char) * 20);
hoge(ptr);
printf("%s\n", str);
return 0;
}
char buff[20];
strcpy(&buff[0], "何らかの処理");
return &buff[0];
}
int main(int argc, char* argv[]){
char* str = hoge();
printf("%s\n", str);
return 0;
}
多分、こうなってたんじゃないか?
配列は、自分で管理すべきだよねー。
void hoge(char* const str){
strcpy(&str[0], "何らかの処理");
return 0;
}
int main(int argc, char* argv[]){
/* char str[20]; */
char* ptr = nul;
/* ptr = &str[0]; */
ptr = (char*)malloc(sizeof(char) * 20);
hoge(ptr);
printf("%s\n", str);
return 0;
}
386デフォルトの名無しさん (ワッチョイ 919f-8CrJ)
2017/11/19(日) 04:46:36.12ID:uKY6C0dJ0 意味は同じだし最適化されるからどうでもいいことではあるが、
そこの &str[0] は単に str と書くだけでいいんじゃないの?
見やすさの点からも受け取る部分が char *str ならそのまんま
str って書いておいた方が分かり易いと思うんだけど。
そこの &str[0] は単に str と書くだけでいいんじゃないの?
見やすさの点からも受け取る部分が char *str ならそのまんま
str って書いておいた方が分かり易いと思うんだけど。
387デフォルトの名無しさん (ワッチョイ 86e7-zZYI)
2017/11/19(日) 05:47:08.77ID:UDBnG5b80 c言語でこういう処理はやめておけ?
388デフォルトの名無しさん (ブーイモ MMf6-6+Yk)
2017/11/19(日) 09:57:18.82ID:v7NTUoVSM 初心者はこれだけ守ってれば良いかと
処理対象のメモリは呼び出し元で確保、alloc-freeで処理をはさむ
処理の戻り値は基本intでエラーコードを返す
ローカル変数は16k未満、可変長配列は使わない
>>387
そんなことはない
処理対象のメモリは呼び出し元で確保、alloc-freeで処理をはさむ
処理の戻り値は基本intでエラーコードを返す
ローカル変数は16k未満、可変長配列は使わない
>>387
そんなことはない
389デフォルトの名無しさん (ワッチョイ 82a4-Eq1o)
2017/11/19(日) 10:16:36.97ID:Rb2sIcHm0 > 処理の戻り値は基本intでエラーコードを返す
malloc先生やprintf先生を見習ったら違反だな
> ローカル変数は16k未満、可変長配列は使わない
何だそのマジックナンバーは??
malloc先生やprintf先生を見習ったら違反だな
> ローカル変数は16k未満、可変長配列は使わない
何だそのマジックナンバーは??
390デフォルトの名無しさん (ワッチョイ a193-oo0Z)
2017/11/19(日) 10:34:41.84ID:YNZopTj60 malloc に限らんけど、ポインタを返す関数は
失敗の場合にNULLを返すってのはまぁ基本だね。
線形リストの探索、見つからなければNULL、みたいに。
printf の返り値はintだから一応は >>388 の方針通りじゃろ。
成功なら非負の値、失敗したら -(エラーコード) が返る、
と決めておけば何かと使いやすいわね。
失敗の場合にNULLを返すってのはまぁ基本だね。
線形リストの探索、見つからなければNULL、みたいに。
printf の返り値はintだから一応は >>388 の方針通りじゃろ。
成功なら非負の値、失敗したら -(エラーコード) が返る、
と決めておけば何かと使いやすいわね。
391デフォルトの名無しさん (ワッチョイ 82a4-Eq1o)
2017/11/19(日) 10:42:05.59ID:Rb2sIcHm0392デフォルトの名無しさん (ワッチョイ 7d7f-GXP8)
2017/11/19(日) 10:59:03.36ID:KR+9hAut0 mmapはNULL返さねーけどな
393デフォルトの名無しさん (ワッチョイ 02b3-ZIVp)
2017/11/19(日) 11:41:24.76ID:lBNHVI9l0 エラーはnullとか-1とかの正常時には戻らない値
エラーコードは errno 見ろよ
って言うのが以前のお約束だった気がするけど
エラーコードは errno 見ろよ
って言うのが以前のお約束だった気がするけど
394デフォルトの名無しさん (ワッチョイ 6e81-S+5X)
2017/11/19(日) 12:18:44.42ID:qf87F9y70 printf("%d",printf("1*2*3="));
395デフォルトの名無しさん (ワッチョイ 919f-8CrJ)
2017/11/19(日) 13:05:21.82ID:uKY6C0dJ0 printf() の man page 見てもエラーの時は負の値を返すとしか書いてなくて errno に何か入るとは書いてない。
まあ、実際には中で putchar() と同等な事をするだろうからその中で使われる write() で何か書かれるとは
思うがその辺は保証されていないので使えない。(書き込み時のエラーではないかも知れないしな)。
GNU の asprintf() もエラー時は -1 を返すのみで errno については何も書いてない。
それと snprintf() のような結果を書き込むバッファの大きさを指定できるやつはバッファを使い切った場合の
エラーの返し方が違う。
まあ、実際には中で putchar() と同等な事をするだろうからその中で使われる write() で何か書かれるとは
思うがその辺は保証されていないので使えない。(書き込み時のエラーではないかも知れないしな)。
GNU の asprintf() もエラー時は -1 を返すのみで errno については何も書いてない。
それと snprintf() のような結果を書き込むバッファの大きさを指定できるやつはバッファを使い切った場合の
エラーの返し方が違う。
396デフォルトの名無しさん (アウアウカー Sa49-GczB)
2017/11/19(日) 16:13:09.94ID:ViWWOCHYa 条件が
文字列の長さ
文字列比較
でソートしたくて2回forで回してます
流石にこれでは件数が増えたときにとてつもなく遅くなるので1回のforだけでやる方法を教えてください
文字列の長さ
文字列比較
でソートしたくて2回forで回してます
流石にこれでは件数が増えたときにとてつもなく遅くなるので1回のforだけでやる方法を教えてください
397デフォルトの名無しさん (ワイモマー MM05-harS)
2017/11/19(日) 16:19:33.08ID:lEYmgXHFM >>396
普通にソートすれば、長い方が後に来るんじゃね?
普通にソートすれば、長い方が後に来るんじゃね?
398デフォルトの名無しさん (ワッチョイ 41b3-wRfy)
2017/11/19(日) 16:32:59.11ID:NI05LLAC0 条件を変えて2回まわしたら1回目のソートは(ほぼ)意味がないんじゃない?
(順位を保つソート法なら 多少意味が出てくる: qsort はその保障はない)
qsort の srot_cmp の記述で
比較すべき それぞれの要素 c1 と c2 を多重に比較すればいい
・「文字列長さ」で比較し 違うなら大小関係を返す→
↓
・(上の比較が等しいので)「文字列」比較し 違うなら大小関係を返す→
↓
:
↓
・(上の比較が等しいので)等しいと返す
これならソートは1回だけ
(順位を保つソート法なら 多少意味が出てくる: qsort はその保障はない)
qsort の srot_cmp の記述で
比較すべき それぞれの要素 c1 と c2 を多重に比較すればいい
・「文字列長さ」で比較し 違うなら大小関係を返す→
↓
・(上の比較が等しいので)「文字列」比較し 違うなら大小関係を返す→
↓
:
↓
・(上の比較が等しいので)等しいと返す
これならソートは1回だけ
399デフォルトの名無しさん (ワッチョイ e1b3-FOlU)
2017/11/19(日) 18:57:37.27ID:LiOPGVVq0 https://i.imgur.com/rkQ9ns8.jpg
この2.の(2)の総ステップ数って
f=1で1回、for文内でn回で、T(n)=n+1
であってる?
なんか授業でやったときは3n+4だったか4n+3だったかそんな数字だったと思うんだが求め方がよく分からん
この2.の(2)の総ステップ数って
f=1で1回、for文内でn回で、T(n)=n+1
であってる?
なんか授業でやったときは3n+4だったか4n+3だったかそんな数字だったと思うんだが求め方がよく分からん
400デフォルトの名無しさん (ワッチョイ 919f-RuWE)
2017/11/19(日) 19:18:57.18ID:uKY6C0dJ0 >>399
f=f*i の部分は四則演算1回と代入1回だから2ステップなのでは?
f=f*i の部分は四則演算1回と代入1回だから2ステップなのでは?
401デフォルトの名無しさん (ワッチョイ feeb-MUuo)
2017/11/19(日) 19:34:22.94ID:H23Xb2RQ0 f=1 代入1回
for(i=1;i<=n;i++) -> for(i=1;i<=n;i=i+1) 代入1回; 条件判断n+1回; 四則演算n回、代入n 回
f=f*i; 四則演算n回、代入n回
なので合計 5n+3 ステップかな、i++ を1ステップとする処理系なら 4n+3 とか。よくわからんけど
for(i=1;i<=n;i++) -> for(i=1;i<=n;i=i+1) 代入1回; 条件判断n+1回; 四則演算n回、代入n 回
f=f*i; 四則演算n回、代入n回
なので合計 5n+3 ステップかな、i++ を1ステップとする処理系なら 4n+3 とか。よくわからんけど
402デフォルトの名無しさん (ササクッテロラ Spd1-lqMT)
2017/11/20(月) 14:16:42.45ID:QGisDeezp >>401
いまどきオプティマイザあるからどっちも同じアセンブルコードになる悪寒
いまどきオプティマイザあるからどっちも同じアセンブルコードになる悪寒
403デフォルトの名無しさん (ワッチョイ a9ea-wRfy)
2017/11/20(月) 14:28:22.74ID:8OH1W8zR0 i++ を1ステップ勘定するか 2ステップ勘定するかは悩ましいけど
分解して 四則演算の1 + 代入の1 計2ステップ の見積もりするのが妥当なんかな
題中にインクリメント演算についてのステップ数は明示されてないし
分解して 四則演算の1 + 代入の1 計2ステップ の見積もりするのが妥当なんかな
題中にインクリメント演算についてのステップ数は明示されてないし
404デフォルトの名無しさん (ワッチョイ ae6e-Eq1o)
2017/11/20(月) 17:25:41.15ID:ZHV8ZCmh0 i++みたいにハード的にありえない(メモリは加算機能を持たない)ことは
マイクロコードで実現しているわけで、1ステップなわけがない
マイクロコードで実現しているわけで、1ステップなわけがない
405デフォルトの名無しさん (ワッチョイ 6e81-S+5X)
2017/11/20(月) 17:45:57.87ID:8KCSU74o0 狙いは記述の簡潔化
406デフォルトの名無しさん (アウアウカー Sa49-DesR)
2017/11/20(月) 17:54:00.78ID:jMZlCBbia 単体のi++は無駄だから++iにしろってばっちゃが言ってた
407デフォルトの名無しさん (JP 0H29-axvV)
2017/11/20(月) 18:09:22.43ID:uYx1UAMqH じっちゃんはそんな差は最適化で消え失せるって言ってたよ
408デフォルトの名無しさん (ワッチョイ 82d2-vi7v)
2017/11/20(月) 19:51:59.87ID:glF63Wia0 i += 1;に統一しろや
409デフォルトの名無しさん (ワッチョイ 068a-v84M)
2017/11/20(月) 20:13:15.58ID:WOKp52/B0 つまりC++死ねと言う事で
410デフォルトの名無しさん (ワッチョイ e260-v9tW)
2017/11/20(月) 20:44:27.03ID:Y8ntE/6M0 暗号の話で面白いネタありませんか?
411デフォルトの名無しさん (ワッチョイ 0646-FOlU)
2017/11/20(月) 23:46:50.09ID:iMFZcv9G0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
- 「そんなに米国が言う通りにやりたいのか」小泉氏、防衛費増額で立民・後藤祐一氏に反論 [少考さん★]
- 中国がここまで過敏になるのは日本に前科があるから。盧溝橋、満州事変。ジャップの先制攻撃は挙げればキリがないけど [472617201]
- 犬って顔くっつけて寝たがるよな
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- ひらがなの"ふ"、"な"がかけないFラン新入社員に激怒。学歴フィルターは必要と厳格化に踏み切った企業 [737440712]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
- 実際、朝7~8時の電車通勤は確実にQOL下げてるけど、心に余裕のない社畜にそれ言ったら炎上するよな [315293707]
