トップページ⇒tech
1002コメント337KB

C言語なら俺に聞け 138 [無断転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 8b7b-7i2P)2016/12/10(土) 21:13:56.19ID:Y8xCOPeF0
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/1475580238/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0002デフォルトの名無しさん (ワッチョイ 537b-ifuQ)2016/12/11(日) 00:16:28.13ID:1/Psj4wD0
  ∧_∧_∧:::::::
 (   ,,゚)゚* )::::::::  HoChu
〜(___)_)〜::::::
0003デフォルトの名無しさん (ワッチョイ 8b4e-Ts63)2016/12/11(日) 00:27:22.22ID:Fe+GkT0n0
ほっしゅっしゅ
0004デフォルトの名無しさん (ワッチョイ a74f-drn7)2016/12/12(月) 16:37:34.92ID:WPCsPjPg0
前スレ終了からの即死回避
0005デフォルトの名無しさん (アウアウイー Sa37-Cn1F)2016/12/12(月) 20:38:07.05ID:D4fd559ba
C初心者です
入力した数値を画面に表示させたいのですが、少し質問させてください

�@入力の際に、例えば「参加人数:4人」のように「参加人数:○人」だけ先に
表示させ、数値を入力すると○が埋まるようにしたいのですが可能でしょうか?

�A入力する数字を一桁に限定し、例えば「23」と打ったらまず2が表示され、
3を打った時点で3に上書きされるようにしたいのですが可能でしょうか?

以上です
暇なときにでもご回答いただければ幸いです
0006デフォルトの名無しさん (ワッチョイ a7e3-VjgG)2016/12/12(月) 20:57:09.58ID://vq14Rq0
>>5
両方とも不可
cursesのようなライブラリ使えば可
0007デフォルトの名無しさん (アウアウイー Sa37-Cn1F)2016/12/12(月) 21:06:02.24ID:D4fd559ba
>>6
ありがとうございます
助かりました
いつか挑戦してみようと思います
0008デフォルトの名無しさん (ワッチョイ 6f5b-3ple)2016/12/12(月) 22:19:08.00ID:tKvygcuz0
いったん背景色で塗りりつぶして、
TextOutで上書きすれば良いだけじゃないの?
0009デフォルトの名無しさん (ワッチョイ ef17-WrC4)2016/12/12(月) 22:43:54.48ID:XxcsTlOG0
まだCUIが一般的だったほど昔にそういうの作ったことあるけど
カーソル制御や上書き削除やらで面倒だったな
0010デフォルトの名無しさん (ワントンキン MMef-/x+d)2016/12/12(月) 23:29:21.97ID:hz71Kf5GM
>>5
一行だけでいいなら、printf ¥r で出来るよ
まぁでもおすすめはcursesかなわりと簡単で便利
0011デフォルトの名無しさん (ワッチョイ 277b-j1Yw)2016/12/13(火) 05:32:03.76ID:T6NEUE2P0
cursesだってCで書いてあるわけだから、複数行だろうがなんだろうが自分でできないわけではないね
curses使えば楽なのは疑う余地もないけど
0012デフォルトの名無しさん (トンモー MM07-38k1)2016/12/13(火) 08:46:00.04ID:CeDguAajM
ああ、そういえば、そういうのあったね。
ぐらいしか覚えてない。

仕事し過ぎて倒れて入院したとき
記憶が一部なくなったみたいなんだ。

仕事し過ぎに注意してね!
0013デフォルトの名無しさん (ガラプー KK77-sx4I)2016/12/13(火) 19:23:39.69ID:vty9E/+AK
質問なんですけど、
文字列のポインタをリターンしたいんですが、どうすればいいのか教えて下さい

char* hage="abc";
return hage;
0014片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK77-sH8c)2016/12/13(火) 19:49:47.08ID:AlD2ABgfK
constを付ける

const char *hage="abc";
return hage;
0015デフォルトの名無しさん (アウアウイー Sa37-Cn1F)2016/12/13(火) 19:57:22.74ID:urfJjx8Pa
やりたいことがよくわからんが、こういうこと?
#include <stdio.h>

char* sub(void){

char *hoge = "abc" ;
return hoge ;
}

int main(void){

char *piyo ;
piyo = sub() ;
puts(piyo) ;

return 0 ;
}
0016デフォルトの名無しさん (ガラプー KK77-sx4I)2016/12/13(火) 20:04:03.56ID:vty9E/+AK
そうです

constつけたらエラーになりました
0017デフォルトの名無しさん (ブーイモ MM07-JZIj)2016/12/13(火) 20:06:58.91ID:Jg0pzD7jM
const char* func()ってすれば?
0018デフォルトの名無しさん (アウアウイー Sa37-Cn1F)2016/12/13(火) 20:12:55.25ID:urfJjx8Pa
上手くいかないコードがあるならそれを見せてくれないと何とも言えん
0019デフォルトの名無しさん (ガラプー KK47-sx4I)2016/12/13(火) 20:14:57.61ID:vty9E/+AK
諦めました
おさわがせしました
0020デフォルトの名無しさん (ワッチョイ 4bdc-+dBx)2016/12/13(火) 21:27:28.77ID:yoJDLw390
諦めちゃったなら意味ないんだろうけど、こんな感じじゃろ。
const char *str_ptr(void) {
 const char *ret = "some string";
 return ret;
}

固定の文字列なら変数に代入する必要すらなくて
const char *str_ptr(void) {
 return "constant string";
}

固定文字列を返す関数に実用性があるか不明だけど、
「関数内で生成した文字列だけど外部で書き換えないでね。
変更するなら呼出し側でコピーしてから好きに変更してね」
という意図は明らかにできるかな。
0021片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK77-sH8c)2016/12/13(火) 22:24:10.67ID:AlD2ABgfK
自分でやるのをあきらめる人が居るから、技術料の要求が許される。
そうした技術は誰もができる訳ではない。
0022デフォルトの名無しさん (ワッチョイ 0b7b-ymeu)2016/12/13(火) 22:59:11.03ID:tzzF7wIm0
>>14,20
死ね、ゴミクズ

static const char *ret = "some string";
0023片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK07-sH8c)2016/12/13(火) 23:05:12.14ID:AlD2ABgfK
>>22
うるせえ雑魚。これはポインタだから静的に確保しても変わらない。
無駄にconst付けすぎ。
0024片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK07-sH8c)2016/12/13(火) 23:07:31.79ID:AlD2ABgfK
訂正。「無駄にconst付けすぎ。」をケス。
0025デフォルトの名無しさん (ワッチョイ 533c-drn7)2016/12/13(火) 23:12:36.49ID:4GRPhoBF0
リテラル文字列そのものはスコープから抜けても静的に生き続けてるから
ポインタ戻したあとに利用してもセフセフ (内容の書き換えは駄目だけど)
0026片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK77-sH8c)2016/12/13(火) 23:17:48.20ID:AlD2ABgfK
const char *ret = "some string";
このコードは「some string」という文字列をヌル終端で読み込みのみのメモリーに格納し、そのメモリーの先頭アドレスをretにセットする。
古い規格ではconstは必要なかったが、読み込み専用で書き込みできない(read-only)なので、新しい規格ではconstが必要。
0027片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK77-sH8c)2016/12/13(火) 23:22:12.21ID:AlD2ABgfK
配列にした場合、const char ret[] = "some string";
となって文字列はスタックに確保される。この場合constを付けなければ、書き込み可能になる。
スタックメモリーを戻り値として返すのはまずいので、このような配列を返す場合はstaticを付けなければならない。
0028デフォルトの名無しさん (ワッチョイ b3e3-VjgG)2016/12/13(火) 23:22:36.69ID:Khw0PcSJ0
static const char const *ret = "some string";
0029デフォルトの名無しさん (ワッチョイ 533c-drn7)2016/12/13(火) 23:44:58.81ID:4GRPhoBF0
>>20 の例で
関数抜けた時にリテラル文字列 "some string" や "constant string" は
「スコープの外に出た時無効になるから、そんなんのポインタ返しても無意味だろ」 と勘違いする人は多いね
0030デフォルトの名無しさん (ワッチョイ b741-l58V)2016/12/14(水) 07:55:05.48ID:Mw3ROjnJ0
>>29
そうそう。>>27が色々書いてるけど、スタックに積まれるのはポインタであって、文字列はコンパイル時にread onlyの領域に確保されてるよね。
0031デフォルトの名無しさん (ブーイモ MM47-5xeh)2016/12/14(水) 08:26:04.47ID:vp5qXEYzM
実装によらず、規格上その文字列がいつまでも生きてる保証あるの?
0032デフォルトの名無しさん (ワッチョイ 4324-iA20)2016/12/14(水) 09:02:00.45ID:lLfa6c4n0
>>31
c++11規格なら間違いなくある。
つい最近確認した。
多分03でも書いてあるんじゃないかな。

確か、static strage classと同等、みたいな書き方だったような。
0033デフォルトの名無しさん (ドコグロ MMc7-Wysm)2016/12/14(水) 09:15:55.10ID:aDnd8CGXM
>>31
JISX3010によれば、文字列リテラルは静的記憶域期間を持ち、プログラムが終了するまで生存する
0034デフォルトの名無しさん (ブーイモ MM47-5xeh)2016/12/14(水) 10:39:10.20ID:vp5qXEYzM
>>32
>>33
サンキュ
0035デフォルトの名無しさん (ワッチョイ 7b36-dpej)2016/12/14(水) 14:05:12.47ID:Q3fXtkGO0
>>30
>文字列はコンパイル時にread onlyの領域に確保されてるよね。
そうとは限らない
0036デフォルトの名無しさん (ワントンキン MMef-g0tO)2016/12/14(水) 14:59:39.26ID:q11TWfYqM
K&R的には書き換え可能を謳っていたし
0037デフォルトの名無しさん (アウアウカー Sa67-xb/r)2016/12/14(水) 19:08:19.34ID:rxF6bqb2a
JISX3010だと書き換えは未定義動作だけどな
その癖、rodataに置かれる保証がない
0038デフォルトの名無しさん (ワッチョイ d342-WrC4)2016/12/14(水) 19:10:44.42ID:h4mrordC0
配列に格納された文字列でなく、埋め込まれた文字列を書き換えるって気持ち悪くないですか?
0039デフォルトの名無しさん (アウアウカー Sa67-xb/r)2016/12/14(水) 19:18:33.23ID:rxF6bqb2a
文字列リテラルは配列だぞ
0040デフォルトの名無しさん (ワントンキン MMef-g0tO)2016/12/14(水) 19:30:20.71ID:q11TWfYqM
>>38
文句はカーニハンに言っておくれ
0041デフォルトの名無しさん (トンモー MM07-38k1)2016/12/14(水) 20:30:13.70ID:Z+mku6fRM
k&rは間違いもあるでしょ?
0042デフォルトの名無しさん (ワントンキン MMef-g0tO)2016/12/14(水) 20:44:27.77ID:q11TWfYqM
昔はあれだけが規約だったし。Lattice C / MS-C ver 2.x の頃
ちなみに SONY News は a =- b; 構文をサポートしていた
0043デフォルトの名無しさん (ワッチョイ 95b3-BQpQ)2016/12/15(木) 11:21:06.21ID:vd5CEk1t0
コンソールからコマンド列を取得する方法で教えて下さい。

CMD 0,1,2,3, ...... ,63

↑こんな感じで、カンマ区切り64個の文字列をsscanf()で取り込もうとしましたが、
「_sscanf': too many parameters」というエラーがでて怒られてしまいました。
文字列が16個まではsscanf()でエラーがでませんでした。

sscanf以外で実現する方法はないでしょうか?
コンパイラはKeil社製のC51です。
0044デフォルトの名無しさん (ドコグロ MM1c-qYir)2016/12/15(木) 11:56:22.89ID:QR6DFXxyM
>>43
コマンドライン引数 C言語でググれ
0045デフォルトの名無しさん (JP 0H21-sBe1)2016/12/15(木) 13:10:44.01ID:KqXo4C+PH
コマンドライン引数は取得できてて、文字列の分解方法を知りたいだけじゃないの?
質問が悪いけど。
0046デフォルトの名無しさん (ワントンキン MM40-Qnvt)2016/12/15(木) 13:15:54.25ID:4tPXC7shM
strtok でぐぐれ
0047デフォルトの名無しさん (JP 0H21-sBe1)2016/12/15(木) 13:20:01.21ID:KqXo4C+PH
で、そうだとして、独自の組み込み用コンパイラに
どこまでライブラリ揃ってるかわからんが
strtok使うかstrchrとstrncpyを繰り返していくかくらいかな
0048デフォルトの名無しさん (ワッチョイ 5953-8u2n)2016/12/15(木) 14:07:18.55ID:lA9gUxPc0
>>43
16個まで読み取れるのならsscanf()1回につき15以下に分けて何回か繰り返し使えば
0049デフォルトの名無しさん (ワッチョイ bf42-8I6M)2016/12/15(木) 14:19:49.75ID:h9p732cR0
自分で作った方がカスタマイズもできるしいいのではないか?
0050デフォルトの名無しさん (ドコグロ MMb8-1Qes)2016/12/15(木) 22:25:33.84ID:1piDfet3M
>>42
a=-b; がサポートされてなかった頃は、どう表現してたの?
0051デフォルトの名無しさん (ワントンキン MM40-Qnvt)2016/12/15(木) 23:05:59.73ID:4tPXC7shM
>>50
a -= b; こちらが仕様に残った
0052デフォルトの名無しさん (ワッチョイ 313b-1Qes)2016/12/15(木) 23:46:21.78ID:AelGIewF0
>>51
a=-b;
a-=b;

意味が全然違うんですけど?
0053デフォルトの名無しさん (ワントンキン MM40-Qnvt)2016/12/16(金) 00:01:29.94ID:NxW+n95+M
>>52
K&Rの第一版を探してよく読んでみなされ。
古い構文では同じ意味になる。
0054デフォルトの名無しさん (ブーイモ MMb8-NNp8)2016/12/16(金) 00:11:41.99ID:8smapNZTM
マイナスbと紛らわしいから変更になったんだよ
0055デフォルトの名無しさん (トンモー MM8d-jDu7)2016/12/16(金) 08:18:46.38ID:xflKNdYkM
まぎらわしかったのは覚えてますよ。
0056デフォルトの名無しさん (ドコグロ MMb8-1Qes)2016/12/16(金) 09:23:50.57ID:4trABnm/M
>>54
なるほど、
a=-b;
a= -b;
が違うってことか。
0057デフォルトの名無しさん (ドコグロ MM55-T1UI)2016/12/16(金) 12:55:58.67ID:r8Wq9TPYM
>>53
手元の初版(但し石田晴久の翻訳版)だと代入演算子はop=の形だけど、それって原書?
0058デフォルトの名無しさん (ワントンキン MM40-Qnvt)2016/12/16(金) 13:01:23.14ID:NxW+n95+M
>>57
注記があるでしょ。
0059デフォルトの名無しさん (ワッチョイ fd7b-NX/j)2016/12/16(金) 13:33:14.62ID:hTcwG5sq0
>>53
歴史的意味を持つ53にふさわしいレスだ
0060デフォルトの名無しさん (JP 0H21-sBe1)2016/12/16(金) 14:16:34.44ID:2JVojfa5H
注記見当たらないなぁ
俺も知識としては知っているけどどこで読んだのか全く思い出せない
それにしても初版のフォントきたねぇな
よくこれで勉強できたものだ
0061デフォルトの名無しさん (ワッチョイ a1bd-Vn9u)2016/12/16(金) 17:25:53.70ID:UN7/R1CA0
俺がC言語苦手なのは「gccオプションが多様過ぎる」ことだという
事に気が付いた。
ある本で学習したコーディングを違う目的に使おうとしてもさっぱり
動かなかったり無反応だったりする。
そこでさんざん悩んで、いつも最終的に行き着く先は
「gccのオプションが適正じゃない」ってことだ。
それぞれのC言語の解説サイトとかでも、読者は当然のように
gccのオプションを正しく指定できるかのように書いてあるが
そこが一番意味わかんないんだよ。
gccのオプションで最も重要なポイントはなんなのかを教えて
くれ。
0062片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKbf-M0Y0)2016/12/16(金) 17:36:49.95ID:7QWR4VpBK
【gccのよく使うコマンドラインオプション】
-c
コンパイルのみでリンクはしない。
-o file.exe
-o file.o
出力ファイルを指定する。
-O0 (オーとゼロ)
最適化なし。
-O3
最適化する。
-g -ggdb
デバッグ情報を付加する。
-Idir
ディレクトリdirを#includeの検索パスに追加する。
-Ldir
ディレクトリdirをリンカの検索パスに追加する。
0063片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKbf-M0Y0)2016/12/16(金) 17:46:27.69ID:7QWR4VpBK
【gccの覚えておくと便利なコマンドラインオプション】
-lmylib
ライブラリlibmylib.aをリンクする。
-Wall -pedantic
初心者向けにていねいに警告をしてもらう。
-m32
32ビットプログラムとしてコンパイル・リンクする。
-m64
64ビットプログラムとしてコンパイル・リンクする。
-mwindows
ウィンドウズアプリとしてビルドする。
0064片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKbf-M0Y0)2016/12/16(金) 18:01:28.85ID:7QWR4VpBK
【おまけ】
--version
バージョン情報を表示する。
-v --help
詳しいヘルプを表示する。
-std=c11
C11規格でビルドする。
0065デフォルトの名無しさん (ワッチョイ 8ddc-l7I3)2016/12/16(金) 18:01:46.32ID:2kpKp/Uz0
gcc だと -std の指定も大事だよ。新しいPOSIX関数を使うためには
-std=c11 ではダメで -std=gnu11 が必要、とかね。

あと -Wall -Wextra -Werror の三連コンボが好き。
コンパイラ様に奉仕してるようなマゾな気分になれる。
0066デフォルトの名無しさん (ワッチョイ a1bd-Vn9u)2016/12/16(金) 18:01:48.23ID:UN7/R1CA0
おおありがとう。片山さん
C言語の肝はコーディング本体よりここだよな。
最近やっとそういうことに気が付いたぜ。
0067片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKbf-M0Y0)2016/12/16(金) 18:16:08.68ID:7QWR4VpBK
【おまけ2】
-static
なるべくスタティックリンクとしてリンクする(依存するDLLファイルを少なくする)。
-shared
DLLファイルを作る。

※補足。ライブラリファイルを作成したいときはarというコマンドを使う。
0068デフォルトの名無しさん (ワッチョイ 9c7b-KEV/)2016/12/17(土) 01:03:25.85ID:lu7YUydK0
-O3 の最適化は、バグるんじゃねえの?

-O2 にしておく方が無難かな?
0069デフォルトの名無しさん (JP 0H40-GkUW)2016/12/17(土) 01:12:21.32ID:TZRPZZKHH
O3でバグるのであれば99.9%お前のコードが壊れてるだけだから。
0070デフォルトの名無しさん (ガラプー KKbf-g9Jd)2016/12/17(土) 01:27:08.97ID:vFA7y1OsK
何でabsは小数対応してねーんだ?
パーかおめ
0071デフォルトの名無しさん (ワッチョイ f77b-GkUW)2016/12/17(土) 01:28:41.55ID:SZHJDyPT0
fabs
0072デフォルトの名無しさん (ガラプー KKbf-g9Jd)2016/12/17(土) 01:49:15.12ID:vFA7y1OsK
ネタかと思ったらマジであったwww
マジかよせっかく関数自作したのに
0073デフォルトの名無しさん (ワッチョイ f77b-GkUW)2016/12/17(土) 02:07:07.76ID:SZHJDyPT0
こっちがネタかと思うわ
0074デフォルトの名無しさん (ワッチョイ 413c-0G5/)2016/12/17(土) 02:26:35.20ID:YWhF62K90
Borland C++Builder 6J Professional
を昔使ってたんですけどどこかにいってしまったので
似たようなC言語の支援アプリがあれば教えてください
コンパイルができて数値のトレースができればとりあえずいいです
0075デフォルトの名無しさん (ワッチョイ 9c42-cnOc)2016/12/17(土) 03:27:17.17ID:ajJ2f2OI0
DevCpp
0076デフォルトの名無しさん (ワッチョイ 9c42-cnOc)2016/12/17(土) 03:29:29.92ID:ajJ2f2OI0
Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe 2015-04-27

https://sourceforge.net/projects/orwelldevcpp/files/latest/download?source=files
https://sourceforge.net/projects/orwelldevcpp/files/Setup%20Releases/
0077デフォルトの名無しさん (ブーイモ MMb8-NNp8)2016/12/17(土) 20:43:48.69ID:OS2ZpCxxM
>>60
俺も知識として知ってるだけだがソースはここだな

代入演算子
現在は「x -= 1」などと書かれている代入演算子
が、 当時は「x =- 1」と書かれていた。 これは「x
= -1」とまぎらわしく、あきらかな欠陥である。 こ
れについてはDennis Ritchieが多少の 説明 を書いて
いる。
http://www.tom-yam.or.jp/2238/c.html

40年前には今の形だからまさしく無駄知識
0078デフォルトの名無しさん (ワッチョイ ed17-jFiT)2016/12/17(土) 21:00:13.71ID:MJ/TQYFY0
forループのカウント変数をインクリメントするとき、
for (i =0;i < N;i += 1) {
hoge;
}
と書くのは異端でしょうか、やっぱりi++としなければいけないのでしょうか?
0079デフォルトの名無しさん (ワントンキン MM40-Qnvt)2016/12/17(土) 21:02:17.14ID:dZ2G3FBdM
>>77
NEWSは1987年だから29年前の新機種でこの構文が残存していた
0080デフォルトの名無しさん (アウアウカー Sac1-0N6Z)2016/12/17(土) 21:13:03.74ID:KmLdyZjaa
>>78
どっちでも同じなんじゃないの?
0081デフォルトの名無しさん (ブーイモ MM8d-gR9t)2016/12/17(土) 21:20:22.25ID:fx0VAANBM
>>78
好きにせい。
0082デフォルトの名無しさん (ワッチョイ 413c-jFiT)2016/12/17(土) 22:07:19.28ID:NAxcui0t0
>78
好きにしろとは思うが異端な書き方をわざわざする奴とは関わりたくないな。
0083デフォルトの名無しさん (ワッチョイ 8da5-6+SE)2016/12/17(土) 22:59:17.00ID:c3RxWz0q0
>>78
異端かと言われれば、異端ですかね。
0084デフォルトの名無しさん (ガラプー KKbf-g9Jd)2016/12/17(土) 23:25:54.38ID:vFA7y1OsK
異端だという人が居たんだ
0085デフォルトの名無しさん (ガラプー KKbf-g9Jd)2016/12/17(土) 23:26:22.75ID:vFA7y1OsK
異端だと書いたんだとか
0086デフォルトの名無しさん (ガラプー KKbf-g9Jd)2016/12/17(土) 23:26:59.79ID:vFA7y1OsK
異端団体(怪文
0087デフォルトの名無しさん (ガラプー KKbf-g9Jd)2016/12/17(土) 23:29:25.97ID:vFA7y1OsK
淫クリメントではなく2以上ずつ増やす場合なんかはその書き方でもいいんじゃないかと一瞬思ったけど
その場合はブロックの中でiを2倍して使うわな
0088デフォルトの名無しさん (ワッチョイ be17-8I6M)2016/12/17(土) 23:31:47.88ID:KLGPWiej0
>>61
それオプションじゃなくてgcc拡張機能でしょ
gcc拡張マクロとか色々
基本gccでもC標準コード(C99とかC11とか)で書くべき
0089デフォルトの名無しさん (ワッチョイ 413c-0G5/)2016/12/18(日) 06:29:31.94ID:IKefTUjV0
>>76
日本語のものか日本語化できるものじゃないと使えないんですが
0090デフォルトの名無しさん (ワッチョイ 5e3c-J3Q9)2016/12/18(日) 07:34:21.22ID:CFuzcgv70
>>87
0 スタートならそれでいいけど、そうでないなら
> for(i =1; i < N; i += 2) {
の方が楽
0091デフォルトの名無しさん (ワッチョイ 8017-8I6M)2016/12/18(日) 08:28:53.15ID:XMF9Nrwk0
>>87 を書いた ID:vFA7y1OsK のIME辞書について誰も触れないことが、このスレの品質の高さを表している。良い。
0092デフォルトの名無しさん (ワントンキン MM40-Qnvt)2016/12/18(日) 09:00:14.06ID:M1pyFWnCM
共有あぼーんだから見てないとかだったりして
0093デフォルトの名無しさん (ワッチョイ a1c1-0N6Z)2016/12/18(日) 14:29:08.73ID:DOnS1Isy0
初学者なのですが、ANSI Cでバッファリングしない入出力関数(read,writeなど)は用意されていませんか?
0094デフォルトの名無しさん (アウアウカー Sac1-W/im)2016/12/18(日) 16:10:21.20ID:eYgTWekAa
setbufでバッファリング止める
0095デフォルトの名無しさん (エーイモ SEc8-WqSn)2016/12/18(日) 20:40:17.75ID:YPxTMQCXE
変数を定義するときにprintf("hello %s", "world")みたいにフォーマットで値を指定するのは何を使うのでしょうか?

↓こんな感じでフォーマットで値を代入したい
char[100] s = printf("hello %s", "world")
0096デフォルトの名無しさん (ワントンキン MM40-Qnvt)2016/12/18(日) 20:42:12.85ID:M1pyFWnCM
sprintf(s,.....
0097デフォルトの名無しさん (アウアウカー Sac1-MtzF)2016/12/19(月) 01:09:08.33ID:ueP3u2TYa
キーボードからの入力を任意のn回受付けたいのですがどうすればいいでしょうか

例えばn=3だとすると
2016
12月19日
東京
のように入力と改行を三回繰り返せるようにしたいのです
できればscanfは使わない方向でいきたいと思います
nが定数なら回数分fgetsを用意すればいいとは思うのですが、不定の場合がわからなくて
よろしくお願いします
0098デフォルトの名無しさん (ワッチョイ ed17-jFiT)2016/12/19(月) 01:58:42.38ID:4+gdyXDN0
callocで領域確保してその分だけforで入力回せばいいのでわ?
0099デフォルトの名無しさん (ワントンキン MM40-E6rE)2016/12/19(月) 12:27:19.85ID:Pjh5QTzyM
>>97
CTRL+DとかCTRL+Zでループ抜けるようにするとか?
0100デフォルトの名無しさん (ワッチョイ 8ddc-l7I3)2016/12/19(月) 12:50:31.86ID:T4wJ3ee00
char buf[BUFFSIZE];
while (1) {
 if (fgets(buf, sizeof(buf), stdin) == NULL) break;
 if (strcmp(buf, ".") == 0) break; /* 終了時は . だけを入力 */

/* buf(入力された1行)を使って何か処理 */
}

こんな感じかな?
「とりあえず無限ループで回して終了判定はループ内で」という気持ち。
普通は fgets() を while のループ条件にすると思うけど、
この例では意図のとらえやすさを優先。

最初の入力行が西暦年ならトータル3行、年のない日付ならトータル2行、
みたいな処理が必要なら見当違いだけど。
0101デフォルトの名無しさん (アウアウカー Sac1-MtzF)2016/12/19(月) 13:01:28.64ID:4nRPbYuPa
>>98
>>99
>>100
ありがとうございます
某サイトの問題を解くためのものなので詳しく説明できず申し訳ないです
最初に出題者側がnを標準入力し、その後にn行の文字列が入力され、それに対して処理するような形です
もう少しがんばってみます
0102デフォルトの名無しさん (ワッチョイ e03c-XTx4)2016/12/19(月) 18:56:58.55ID:2RVgkSEz0
>>100
>  if (strcmp(buf, ".") == 0) break; /* 終了時は . だけを入力 */

"." ではなく ".\n" にしないと抜けられない
0103100 (ワッチョイ 8ddc-l7I3)2016/12/19(月) 19:32:58.55ID:T4wJ3ee00
>>102 いや、お恥ずかしい。
いつもfgets()の結果に'\n'まで格納されることを忘れる。

というか、fgets()の直後で'\n'の存在を見て入力行を全部拾えたか確認、
そのついでに'\n'を取り除いちゃうんだわ。
0104デフォルトの名無しさん (エーイモ SE8e-WqSn)2016/12/20(火) 11:17:47.54ID:T47v8o6SE
linuxにgccとclangをインストールしたんですが
/usr/includes以下をstdio.hで検索すると4つのファイルがヒットします

/usr/include/x86_64-linux-gnu/bits/stdio.h
/usr/include/c++/4.9/tr1/stdio.h
/usr/include/bsd/stdio.h
/usr/include/stdio.h


#include <stdio.h>と書いた時のstdio.hはどこからincludeされてるのでしょうか?
0105デフォルトの名無しさん (ワッチョイ 413c-0G5/)2016/12/20(火) 13:13:13.47ID:pB91CH7m0
Dev-Cpp 5.11を使ってC言語のソースを書いたのですが
コンパイルして実行はできたんですけど
intやcharで指定した整数値、整数列や文字列を
トレースしたものを表示することはできないでしょうか
0106デフォルトの名無しさん (ガラプー KKbf-M0Y0)2016/12/20(火) 13:19:45.21ID:YnwEGLVJK
>>104
http://takuya-1st.hatenablog.jp/entry/20120920/1348511712
0107デフォルトの名無しさん (ワッチョイ 1f7b-enmE)2016/12/20(火) 19:21:16.52ID:o+L+5jFr0
gcc -E source.c とかしてた
0108デフォルトの名無しさん (ワッチョイ 7c36-BQpQ)2016/12/21(水) 00:42:22.31ID:TdzlKDyl0
volatileについて教えて下さい。
以下のコードをgccで-Oでコンパイルすると
func1は逆アセンブラでA.a=2が消えてしまいます。
clangやVCではどちらも消えませんでした。
言語仕様的にはどの動作もありなのでしょうか?

void func1() {
struct { volatile int a; } A = {1};
printf(
0109デフォルトの名無しさん (ワッチョイ 7c36-BQpQ)2016/12/21(水) 00:48:15.78ID:TdzlKDyl0
すいません。失敗したようです。
https://goo.gl/Vv3SY8
0110デフォルトの名無しさん (ワッチョイ be17-8I6M)2016/12/21(水) 00:53:52.33ID:hCsx8Epe0
volatile=揮発性
C言語ではコードで(代入操作等々)何もして無くても勝手に変数の中身が変わる可能性がることをコンパイラに示唆する
コンパイラはその示唆を受けてコードで(代入操作等々)何もして無くても最適化で勝手に除外することから回避させる
0111デフォルトの名無しさん (ガラプー KKbf-g9Jd)2016/12/21(水) 02:00:53.33ID:09QnAhYDK
普通に宣言した変数は勝手にゼロで初期化されるけど、
マロックで確保した領域は初期化してくれないって認識で10年近くやってるんだけど合ってる?

あとマロックで確保することもあるけど、しないこともあるポインタを
フリーするときにいつも困る。
できるだけ初期化時にヌルを入れて、フリーするときにヌルかどうかチェックさてるんだけど、
たまに忘れてマロックしてないポインタにフリーかけて原因不明のクラッシュが発生する。
もう少しスマートなやり方はないものか。
0112デフォルトの名無しさん (ワッチョイ 9c7b-KEV/)2016/12/21(水) 03:27:15.89ID:KDR4mUhA0
SafePointer とか、そういうマクロ・関数でも作れば?

というか、もう既に、誰かが作っているはず
0113デフォルトの名無しさん (ブーイモ MMb8-NNp8)2016/12/21(水) 03:37:07.42ID:UEWExIW4M
freeはNULLそのまま渡しても問題ない
初期化でint *p=NULLとかすればいいだけでは?
グローバル使い回してるならfree後きちんとNULL入れるとか
0114デフォルトの名無しさん (ワッチョイ 3a13-0G5/)2016/12/21(水) 07:51:57.04ID:zzXbA3YE0
>>111
>普通に宣言した変数は勝手にゼロで初期化
されない

>できるだけ初期化時にヌルを入れて、フリーするときにヌルかどうかチェックさてるんだけど、
あまりよくない,ロジックとしてフリーするかしないかを決めるように作る
0115デフォルトの名無しさん (トンモー MM8d-jDu7)2016/12/21(水) 08:34:41.63ID:UE5SYSGLM
>>111
それはそもそもプログラマとして、
仕事で作ってるんじゃないよね?

仕事でそのレベルだと
プログラマ辞めて欲しい。
迷惑だから。
0116デフォルトの名無しさん (アウアウカー Sac1-MtzF)2016/12/21(水) 08:38:04.20ID:ckTdq8QXa
デジタルネイティブ世代が8才くらいから始めて今18くらいなんやろ(ハナクソホジー
0117デフォルトの名無しさん (ワッチョイ 9d4e-i+Qt)2016/12/21(水) 09:48:09.17ID:mEC73fYi0
freeしたらNULL代入
当然ですよね皆さん
0118デフォルトの名無しさん (ワッチョイ bf42-8I6M)2016/12/21(水) 09:55:04.66ID:eJeA761i0
それより電源を切る方が速いし確実
0119デフォルトの名無しさん (ワッチョイ d1a1-YA5h)2016/12/21(水) 11:37:02.65ID:DeAhOSlZ0
>>111
グローバル変数は、0になってる。
関数とかブロックのなかにあるのは、自分で初期化しなければならない
0120104 (エーイモ SEc8-WqSn)2016/12/21(水) 12:13:59.21ID:hWdBWEeDE
clang -print-search-dirsでパスを確認してみました
見やすいように加工しました
これ全部辿ってもstdio.hを含むディレクトリがありませんでした
[programs]
/usr/bin
/usr/lib/llvm-3.9/bin
/usr/x86_64-linux-gnu/bin
[libraries]
/usr/lib/llvm-3.9/lib/clang/3.9.1
/usr/lib/gcc/x86_64-linux-gnu/4.9
/usr/lib/x86_64-linux-gnu
/lib/x86_64-linux-gnu
/lib64
/usr/lib/x86_64-linux-gnu
/usr/lib
/usr/lib/llvm-3.9/lib
/lib
/usr/lib
0121デフォルトの名無しさん (JP 0H21-sBe1)2016/12/21(水) 12:25:58.51ID:IT3zLaEfH
>>120
>>107
0122デフォルトの名無しさん (ワッチョイ 8ddc-l7I3)2016/12/21(水) 12:30:57.72ID:KtI+UjCH0
>>104
>>106 のリンク先の一部だけ読んで早とちりしてるな。
print-search-dirs のオプションはリンカ向けのパス指定らしい。

#include のパスはコンパイラに -v をつけて調べるみたいだぞ。
具体的には↓
$ gcc -v main.c

または >>107 のプリプロセッサの出力を得る手法
$ gcc -E main.c
0123104 (エーイモ SE8e-WqSn)2016/12/21(水) 18:00:41.19ID:WQL39TxQE
-vとか-E付けたらドバっと出力がでてきてそこ確認したらstdio.hのパスが表示されてました
先輩方ありがとうございます
0124デフォルトの名無しさん (ワッチョイ 9e5b-zrF5)2016/12/21(水) 20:11:21.17ID:zZhKNwXq0
俺はNULLは使わない。信用できない。
\0を入れる。
0125デフォルトの名無しさん (ワッチョイ 3a13-0G5/)2016/12/21(水) 20:38:11.00ID:zzXbA3YE0
>>119
グローバル変数?何それ?
0126デフォルトの名無しさん (ワッチョイ 3a13-0G5/)2016/12/21(水) 20:38:52.35ID:zzXbA3YE0
>>124
0 でいいのになぜ \ をつけるのか?
0127デフォルトの名無しさん (ワッチョイ 9e17-3Pgg)2016/12/21(水) 22:09:33.49ID:lWq75keW0
NULLも0も\0も意味が違うだろう
言語仕様上全て0で書けるとしてもだ
0128デフォルトの名無しさん (ワッチョイ 9cba-0G5/)2016/12/21(水) 22:41:46.82ID:LwOfWJ5k0
NULLはヌルポインタなんだから正しいだろ
0129デフォルトの名無しさん (ワッチョイ d1a1-YA5h)2016/12/21(水) 23:16:38.96ID:DeAhOSlZ0
#define BUFFER_SIZE 64
#include <stdio.h>
#include <string.h>

char clear[BUFFER_SIZE];

int main(void)
{
  char rubbish[BUFFER_SIZE];
  int k;
  for(k = 0; k < BUFFER_SIZE; k++) {
    if(rubbish[k]) {
      putchar('o');
    } else {
      putchar('_');
    }
  }

  putchar('\n');
  memcpy(rubbish, clear, BUFFER_SIZE);
  for(k = 0; k < BUFFER_SIZE; k++) {
    if(rubbish[k]) {
      putchar('o');
    } else {
      putchar('_');
    }
  }

  return 0;
}
0130デフォルトの名無しさん (ガラプー KK8d-g9Jd)2016/12/21(水) 23:39:29.92ID:09QnAhYDK
ありがとう。
グロ変とロー変で初期化具合が違うのは知らなかった。
とりあえず今のところクレームは来てないが気を付けておくよ。

メモリの安全な確保と解放はやっぱり自分で実装しなきゃいけないんだな。
0131デフォルトの名無しさん (ワッチョイ be17-8I6M)2016/12/21(水) 23:45:21.68ID:hCsx8Epe0
Cでは当たり前
普通にメモリリークやん
0132デフォルトの名無しさん (ブーイモ MMb8-sBe1)2016/12/21(水) 23:56:53.47ID:RIWp4NgqM
>>130
クレームとか気をつけるとかのレベルじゃなくて
今すぐ詫び入れて修正してまわるべき件
0133デフォルトの名無しさん (ワンミングク MMff-TSM7)2016/12/22(木) 00:20:54.07ID:uQsPz27EM
初心者ほどvalgrindみたいなメモリチェックツール使うべきだよね。
初心者がよく使うWindowsで同じくらい簡単に扱えるツール知らんけど
0134デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/22(木) 00:50:55.08ID:HKoOWrI10
10年やってて初心者ってのもな
10年でこのレベルのコードを書く奴を野放しにするってのはもう会社としてもダメだね
どんな試験して通したんだよと
0135デフォルトの名無しさん (ワッチョイ 3f48-5BdW)2016/12/22(木) 03:23:33.75ID:ZunrXhMa0
触らぬ神に祟りなし
0136デフォルトの名無しさん (ワッチョイ 7f5b-agOw)2016/12/22(木) 04:30:13.97ID:tW0chUkJ0
グローバル変数や、sitaticを付けた静的変数だけ起動時に0で初期化される。
動的変数は初期化されない。

モニタの前の初心者のみんな!また一つ勉強になったな!
0137デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/22(木) 05:27:51.68ID:wOMf5z1o0
重箱の隅をつつく様だけどC言語では動的変数は使えない
スクリプト言語などで多用される実行時に型が決定される変数がいわゆる動的変数と呼ばれるもの
0138デフォルトの名無しさん (ワッチョイ a74e-qjDb)2016/12/22(木) 05:29:51.18ID:bsgStS2K0
正確には実行時にスタックに確保される変数だな
0139デフォルトの名無しさん (ドコグロ MMdf-PK0Z)2016/12/22(木) 06:48:07.34ID:YVr1LIe6M
>>137
それは動的型付け
そもそも動的変数ってあまり言わないけど静的変数云々の流れなら動的に確保される変数を示すのは自明
0140デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/22(木) 06:52:25.84ID:wOMf5z1o0
C言語に限って言えば自動変数が正しい呼称
0141デフォルトの名無しさん (ワッチョイ 0fba-i5Qz)2016/12/22(木) 06:59:11.51ID:LHSvnxW/0
今どきの初心者はWindowsでCなんかやらんだろうなぁ。
0142デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/22(木) 07:01:23.72ID:wOMf5z1o0
構文的にはC言語の型クラスは、auto、static、registerの3種類
0143デフォルトの名無しさん (ワッチョイ 8f13-i5Qz)2016/12/22(木) 07:04:29.08ID:avfrOzDw0
>>127
#define NULL 0 だよ
\0 は 0 といっしょだよ
全部意味は一緒だよ
0144デフォルトの名無しさん (ワッチョイ 8f13-i5Qz)2016/12/22(木) 07:05:28.35ID:avfrOzDw0
>>136
グローバル変数ってなんや?
0145デフォルトの名無しさん (ドコグロ MMdf-PK0Z)2016/12/22(木) 07:06:44.95ID:YVr1LIe6M
malloc で確保される変数も動的に確保される変数なんだが...
0146デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/22(木) 07:17:57.56ID:wOMf5z1o0
動的に確保される領域ではあるがC言語では動的変数は使えない
だからポインタ経由でアクセスするしか方法がない
0147デフォルトの名無しさん (ワッチョイ 6717-g1cW)2016/12/22(木) 07:38:31.85ID:fTnZmeNI0
一時変数と永続変数ってわけ方しないと。
静的変数と動的変数だと意思疎通しにくい。
時間と空間がごっちゃになってる。
0148デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/22(木) 07:48:36.38ID:wOMf5z1o0
時間と空間って…
それを言うなら寿命とスコープだと思うけど
0149デフォルトの名無しさん (アウアウカー Sa3f-T2iK)2016/12/22(木) 07:54:29.70ID:tsoLK3Hka
ディアルガ変数とパルキア変数と名付けよう
0150デフォルトの名無しさん (ワンミングク MM5f-DNID)2016/12/22(木) 08:03:06.73ID:gEyN05DVM
>>143
いつの時代の話し?
ANSI になった時点で (void*)0 だった気がする
0151デフォルトの名無しさん (ドコグロ MMdf-PK0Z)2016/12/22(木) 08:08:06.14ID:YVr1LIe6M
>>146
いちいち動的型付けの話を混ぜるなよ
struct + union で Variant 型を作るとか普通にあるし文脈的にそんなこと言ってるのはお前だけ
0152デフォルトの名無しさん (ドコグロ MMdf-PK0Z)2016/12/22(木) 08:09:37.36ID:YVr1LIe6M
>>150
> グローバル変数ってなんや?
とか言ってる池沼の相手をするなよ...
0153デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/22(木) 08:15:21.36ID:wOMf5z1o0
>>151
いや動的型付けの話など一言も言ってないんだが
そもそもC言語は静的型付き言語であって実行前にすべての変数の型を指定する必要がある
いきなりmallocみたいなライブラリ関数の話を持ち出したのはそっちだろ
0154デフォルトの名無しさん (ワンミングク MM5f-DNID)2016/12/22(木) 08:16:48.25ID:gEyN05DVM
すまんorz
0155デフォルトの名無しさん (ドコグロ MMdf-PK0Z)2016/12/22(木) 08:31:51.47ID:YVr1LIe6M
>>153
> いや動的型付けの話など一言も言ってないんだが
はあ?
> スクリプト言語などで多用される実行時に型が決定される変数がいわゆる動的変数と呼ばれるもの
0156デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/22(木) 08:34:46.71ID:wOMf5z1o0
動的型付けと動的変数は全く違う観念の話だぞ
型システムそのものの話と変数宣言の言語実装の話をごっちゃにするなよ
0157デフォルトの名無しさん (ドコグロ MMdf-PK0Z)2016/12/22(木) 08:42:36.28ID:YVr1LIe6M
>>156
お前が言うなよ w
0158デフォルトの名無しさん (ワッチョイ af33-Esd/)2016/12/22(木) 08:53:59.83ID:SLe+oBSu0
>>143
違うでしょ。
ほとんどの場合において「値」が同じだけで、「意味」は全く違うから。
とりま C faq 読もう。

更に、リテラル0は表記箇所の文脈に応じて、ヌルポと解釈されるか、値0とされるかが変わるので厄介な場合がある。
…と言うのも有名な話。
0159デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/22(木) 08:56:39.67ID:wOMf5z1o0
>>157
結局なにが言いたいの?
C言語でも動的変数が使えると言いたいの?
例えば、JavaScriptにおけるvar型に相当するものがC言語でも使えるということ?
0160デフォルトの名無しさん (ワッチョイ df16-WoaB)2016/12/22(木) 12:40:30.36ID:I+XQXe+30
0を文脈によってnullpointerと解釈する設計は紛らわしいし悪手だったと思う
0161デフォルトの名無しさん (ドコグロ MMdf-PK0Z)2016/12/22(木) 12:44:28.73ID:YVr1LIe6M
>>159
この文脈で動的型付けの話をする奴は邪魔って話
0162デフォルトの名無しさん (ドコグロ MM7f-XDb5)2016/12/22(木) 12:45:23.04ID:l6mpIMJlM
でも実際に困ったことなんてないし、if(!p) みたいに書けて便利
0163デフォルトの名無しさん (アウアウカー Sa3f-T2iK)2016/12/22(木) 12:45:45.81ID:VZ4t0q/ta
Cの悪手を考え出したらキリがない
0164デフォルトの名無しさん (ドコグロ MMdf-PK0Z)2016/12/22(木) 12:45:57.14ID:YVr1LIe6M
>>160
だね
俺もそう思う
0165デフォルトの名無しさん (ドコグロ MM7f-XDb5)2016/12/22(木) 12:46:00.18ID:l6mpIMJlM
>>160
0166デフォルトの名無しさん (ワッチョイ abe3-eO0d)2016/12/22(木) 19:48:06.13ID:73EJ+NlS0
初心者が読んだら混乱しそうだな

外部変数(グローバル変数) 0で初期化
自動変数(ローカル変数) 初期化必須
静的変数(スタティック変数) 0で初期化

0で初期化が保証されていても、明示するのが好ましい (static int global = 0;)

動的確保(実行時メモリ割り当て)

動的確保されたメモリ領域を変数に代入するとき
その変数を動的変数と呼ぶ風習はCにない

構造体と共用体でバリアント型の下りはデータ構造の話で、また別

>>136は確信犯だろワロタ
0167デフォルトの名無しさん (ワッチョイ a74e-qjDb)2016/12/22(木) 19:51:42.37ID:bsgStS2K0
動的変数という言い方はちょっと違和感あるよね
0168デフォルトの名無しさん (ワッチョイ 8f13-i5Qz)2016/12/22(木) 20:32:19.49ID:avfrOzDw0
>>150
残念
#define NULL 0
が最近のトレンド
0169デフォルトの名無しさん (ワッチョイ 8f13-i5Qz)2016/12/22(木) 20:33:40.19ID:avfrOzDw0
>>158
C FAQ を熟読しなければならないのはお前だ
0170デフォルトの名無しさん (ワッチョイ 8f13-i5Qz)2016/12/22(木) 20:35:05.76ID:avfrOzDw0
>>166
外部変数と静的変数?
どちらも一緒だが?

好ましい?
どっちなんだ?
0171デフォルトの名無しさん (ワッチョイ abe3-eO0d)2016/12/22(木) 21:03:13.21ID:73EJ+NlS0
>>170
一緒じゃない
ただの外部変数なら別ファイルからexternで参照可能
0172デフォルトの名無しさん (ワッチョイ 633c-i5Qz)2016/12/22(木) 21:09:14.41ID:LRLJsAft0
どこまでアクセスできるかのスコープの話
何時までで生きてるかの生命の話
0173デフォルトの名無しさん (アウアウカー Sa5f-GvIT)2016/12/22(木) 21:21:33.78ID:H9zIAGx1a
外部結合だろうが内部結合だろうが静的な記憶期間を持つだろ
自動記憶期間なのは、無結合かつstaticでない場合
変数を外部、自動、静的で分けてる時点で間違い
0174デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/22(木) 21:32:07.85ID:/ytrOsGa0
>>168
NULLが0なのはC++
ここはCスレ
0175デフォルトの名無しさん (ワッチョイ abe3-eO0d)2016/12/22(木) 21:38:08.38ID:73EJ+NlS0
すまん漏れが無知で間違えてた
確かめてみたら>>173の言う通りでつ
0176デフォルトの名無しさん (ワッチョイ d37b-jVSv)2016/12/22(木) 21:44:53.05ID:PGCHp0ah0
スコープから外れたメモリ領域も次に再利用されるまでは内容が残っている
その意味であるメモリ領域の生存期間を明言することは不可能である
パスワード等の一時的な機密情報の読み書きに利用した領域は意識してスワイプしなければならない
0177デフォルトの名無しさん (オッペケ Sr6f-vX8b)2016/12/22(木) 21:47:39.78ID:aXWpoPLSr
>>128
ガッ!
0178デフォルトの名無しさん (ワッチョイ 6b7b-gVVB)2016/12/22(木) 21:48:31.36ID:/ytrOsGa0
>>168
http://ideone.com/7aCxkN
http://ideone.com/2DPmRv
0179デフォルトの名無しさん (アウアウカー Sa5f-6FRj)2016/12/22(木) 22:03:00.09ID:9xT7uFfna
>>176
それを言うならスコープじゃなくてstorage duration(記憶期間)だっていってるだろ!!!

まぁ普段は全く気にしないけどこの流れでこのミスは突っ込まざるを得んわ
0180デフォルトの名無しさん (ワッチョイ abe3-eO0d)2016/12/22(木) 22:06:20.76ID:73EJ+NlS0
>>179
鳥肌実で脳内再生されてワロタ
0181デフォルトの名無しさん (ワッチョイ 377b-3tOZ)2016/12/23(金) 00:41:11.27ID:kZ6vwWWk0
>>166
> 0で初期化が保証されていても、明示するのが好ましい (static int global = 0;)
ダメ オブジェクトが肥大する
0182デフォルトの名無しさん (ワッチョイ 233b-4FBo)2016/12/23(金) 00:44:08.36ID:R3LGx2Ye0
>>158
ガッ!
0183デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/23(金) 00:56:34.50ID:i6XgFiMY0
>>181
何言ってんだ?
0184デフォルトの名無しさん (ワッチョイ 0790-uRrA)2016/12/23(金) 01:03:18.60ID:NoTKxOMK0
floatやポインタを実装によらず0にしたければ
暗黙の初期化を使わずに個別に入れるしかないんじゃなかったっけ?
0185デフォルトの名無しさん (ワッチョイ 9f7b-ecDe)2016/12/23(金) 04:13:13.05ID:Ptdk1YEU0
ヌルポの0は単なるシンタックスシュガー
0186デフォルトの名無しさん (ワッチョイ 0f7b-Ao4e)2016/12/23(金) 04:20:24.28ID:UeJSrfIM0
ポインタの値自体が0であることに何の意味が?

問題はポインタの値がNULLかどうかでしょ?
0187デフォルトの名無しさん (ワッチョイ ff42-W2u1)2016/12/23(金) 04:35:35.84ID:S57Ht5Rq0
ふつうの処理系だとNULLの値は0では?
ながれしらんが
0188デフォルトの名無しさん (ワッチョイ ff42-W2u1)2016/12/23(金) 04:39:13.55ID:S57Ht5Rq0
NULL ‐ 通信用語の基礎知識

NULLマクロは、stdio.hなどをincludeすると定義される。
NULLポインターは、実装上の制約からアドレスであり、その環境内において、決して他に使用されることのない番地を用いることになる。
したがって、その値は環境によって異なる。
Cでは、移植性に配慮し、これをNULLマクロによって定義した。

0番地
殆どのプロセッサー環境で、そのアドレスは0番地が使われる。
まれに異なる番地を用いるシステムもあるが、Cの規格上、その場合も0番地と可換でなければならない。
結果として、NULLポインターは0と書いておけば、Cコンパイラーが自動的に対応してくれることになっている。

定義Cでは、殆どの環境で次のように定義されている。
#define NULL ((void *)0)
但し、C++ではこの定義をそのまま使えない。
C++はvoid *から他のポインター型に暗黙的な変換をせず、エラーになるからである。
C++では数値の0をNULLポインターとして使うことになったため、C++では次のように定義されている可能性がある。
#define NULL 0
http://www.wdic.org/w/TECH/NULL
0189デフォルトの名無しさん (ワッチョイ 9f7b-ecDe)2016/12/23(金) 04:44:25.42ID:Ptdk1YEU0
ポインタに即値を代入することにほとんどの場合は意味はない
唯一の例外が0リテラルを代入する場合であって、この場合は0は空ポインタの糖衣構文とみなされる

要するに>>188の
>結果として、NULLポインターは0と書いておけば、Cコンパイラーが自動的に対応してくれることになっている。
が正解
0190デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 06:43:34.34ID:tydkaaKw0
>>189
> ポインタに即値を代入することにほとんどの場合は意味はない
組み込みだと普通にやってるが?
0191デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/23(金) 07:05:11.47ID:i6XgFiMY0
>>190
日本語読めないのかな?
0192デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 07:41:23.00ID:tydkaaKw0
>>191
説明してみ
0193デフォルトの名無しさん (アウアウカー Sa5f-GvIT)2016/12/23(金) 07:51:18.74ID:/sFuOyUYa
>>188
> 定義Cでは、殆どの環境で次のように定義されている。
> #define NULL ((void *)0)
言語規格で空ポインタ定数は0をvoid*に型変換したものと決まっている
規格に準拠している環境は、殆どではなく全て同等の定義だろ
0194デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/23(金) 07:59:42.47ID:Ptdk1YEU0
>>192
おそらくポインタ変数に対するI/Oポートマッピングのことを言っているのだろうが、
それは単にポインタ変数の使い方だけの話で、ユーザーが変数の用途として意味づけを
行なっているだけ
C言語の言語仕様として意味を持っているのは、0が空ポインタの意味を持つというのが
ポインタに対する唯一の例外項目
0195デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/23(金) 08:22:17.71ID:i6XgFiMY0
>>192
ほとんど の意味が解らないなら辞書引けよ
0196デフォルトの名無しさん (ワッチョイ 8f13-i5Qz)2016/12/23(金) 08:36:51.35ID:xv4JdZit0
>>174
>NULLが0なのはC++
つhttp://www.kouno.jp/home/c_faq/c5.html#5
0197デフォルトの名無しさん (ワッチョイ 233b-4FBo)2016/12/23(金) 08:39:43.05ID:R3LGx2Ye0
純粋なC言語使ってるのは ほとんど 組み込みだろうけど。
0198デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 08:57:18.06ID:tydkaaKw0
>>194
ごめんマジで言ってることがわからん
unsigned char *p = 0x12345678;
unsigned char d = *p;
に意味があるかどうかの話なんだが、言語仕様に違反してるとでも言うのか?

>>195
意味のない代入なんてしてるアホはほとんどいないが? w
0199デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/23(金) 09:54:29.05ID:Ptdk1YEU0
>>198
>unsigned char *p = 0x12345678;
これ自体が意味のない代入の典型
宣言済みの変数のアドレスであれば意味があるが、記憶領域のアドレスそのものをリテラル値で与えても
ほとんど意味のある結果は得られない
まあ先に述べたように組み込み用途のメモリマップトI/Oの様なアドレス固定の場合は#pragma疑似命令などで
アドレス指定するケースならあり得る
ただ上記の0x12345678のような意味のない値だと参照先のメモリアドレスの存在そのものが保証できない
0200デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 09:58:31.62ID:tydkaaKw0
>>199
#pragma も意味わからんが
> ただ上記の0x12345678のような意味のない値
サンプルの意味もわかってないのかよ w
0201デフォルトの名無しさん (ワッチョイ bf6c-i5Qz)2016/12/23(金) 10:05:01.71ID:jXrWBMcI0
>>200
即値を入れてもOSあり、MMUありではほとんどはねられてしまう。
0x1234みたいな値をキャストしてポインタとして扱ってそのアドレスに
アクセスできるのは組み込みの世界の話でしょ、ってことだと思うが。
0202デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/23(金) 10:10:44.89ID:Ptdk1YEU0
>>200
本当にポインタにリテラル値を代入することの無意味さが理解できていないのか?
あえてリテラル値として代入するのであれば文字列リテラルであれば先頭アドレスとしては有効となるが、
数値のリテラル値を代入するとメモリの不正アクセスで実行時エラー起こすのが関の山だぞ
0203デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 10:23:04.08ID:tydkaaKw0
>>201
> アクセスできるのは組み込みの世界の話でしょ、ってことだと思うが。
はなっから組み込みでは
って書いてあるけど?

>>202
> あえてリテラル値として代入するのであれば文字列リテラルであれば
それは「即値の代入」とは違う話
てかお前レベル低すぎ
0204デフォルトの名無しさん (ワッチョイ b77b-xrXw)2016/12/23(金) 10:26:41.29ID:f6uWmMmm0
16 ビットまでのの CPU なら
メモリーアドレスの絶対値の代入は当たり前だった
MMU な CPU と対応 OS ではやる場面自体がなくなった
0205デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/23(金) 10:26:50.38ID:Ptdk1YEU0
組み込みやっていて#pragma疑似命令を知らないとかあり得ないだろ
というかC言語でまともなプログラム組んだことあるのか?
0206デフォルトの名無しさん (ワッチョイ bf6c-i5Qz)2016/12/23(金) 10:31:12.12ID:jXrWBMcI0
>>203
だから組み込み以外で語ろうとしても意味ないよねって話
それで終わる
0207デフォルトの名無しさん (ワッチョイ afd2-vX8b)2016/12/23(金) 11:02:41.55ID:x0WLOQ6R0
>>206
デバイスドライバーとか
0208デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 12:24:44.96ID:tydkaaKw0
>>205
> 組み込みやっていて#pragma疑似命令を知らないとかあり得ないだろ
で、#pragma が
> ポインタに即値を代入すること
にどう関係するんだ? w

>>206
何を言いたいのかよくわからんが
組み込みなら
> ポインタに即値を代入することにほとんどの場合は意味はない
は間違いってことでいいよね?
0209デフォルトの名無しさん (ワッチョイ 6f5a-i5Qz)2016/12/23(金) 12:28:52.80ID:x0B+xQIa0
>>208
>組み込みなら
>> ポインタに即値を代入することにほとんどの場合は意味はない
>は間違いってことでいいよね?
それは当たり前。でもここはマイコンのスレじゃないので
一般的には意味がないといわれてもしょうがない。
0210デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/23(金) 12:36:29.37ID:Ptdk1YEU0
組み込み用のコンパイラでは、I/Oポートや割り込みベクタテーブル、内蔵RAM領域などのセクションごとの
割り当て先頭アドレス、スタートアップルーチンのエントリアドレス指定などの初期設定を#pragmaで行なう
先頭アドレス以降の固定アドレスについてはポインタ配列で行なうのが一般的だろ
その場合でも移植性や再利用を考慮してRAMエリアに関しては極力 絶対アドレス指定を避けるのが常識だろ
というか知っていてとぼけているのか?
0211デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 12:48:46.63ID:tydkaaKw0
>>209
C言語で組み込みが一般的でない?
なかなか面白い意見だな w

>>210
> その場合でも移植性や再利用を考慮してRAMエリアに関しては極力 絶対アドレス指定を避けるのが常識だろ
RAM エリアの話なんて誰もしてないけど?
そもそもアドレスを #define しとくぐらいは常識だし、ボードメーカーからヘッダーファイルで提供されることも多いぞ
ひょっとして
即値 = 数値直書き
とか思ってるのか?
0212デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/23(金) 12:51:18.15ID:Ptdk1YEU0
即値はリテラルと同一視しているな
0213デフォルトの名無しさん (ワッチョイ 9f7b-LLwc)2016/12/23(金) 12:54:23.15ID:Ptdk1YEU0
あと#defineでどうやってアドレスを指定するんだよ
#defineはコンパイル時の値の置き換えだけで、コンパイラに対するバイナリの生成アドレスの指定まで出来ないだろ
0214デフォルトの名無しさん (ワッチョイ 374f-i5Qz)2016/12/23(金) 13:03:25.48ID:uHrKWqOK0
レスバトルしてるけど
ポインターの指し先を  #pragma で制御する方法もあれば
マクロなりでポインターの指し先を直に代入することもあれば
インラインアセンブラでごりごりすいることもあれば
環境が適合してて、記述と動作が意図したとおりになってるならそれでいいや
0215デフォルトの名無しさん (ブーイモ MM3f-rd4d)2016/12/23(金) 13:11:07.92ID:0Ly89bEjM
あ
0216デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 13:28:47.67ID:tydkaaKw0
>>213
なんか必死にセクションの話に持っていきたいみたいだが、ポートアドレスとかの話だからな
0217デフォルトの名無しさん (ワッチョイ 9f7b-ecDe)2016/12/23(金) 13:44:23.58ID:Ptdk1YEU0
もう疲れたわ
とりあえず元に戻って、>>189で言った通り
「ポインタのアドレスで特別な意味を持つのは0リテラルだけでこれは空ポインタのシンタックスシュガーである」
これだけでもういいよ
0218デフォルトの名無しさん (ワンミングク MM5f-DNID)2016/12/23(金) 13:47:00.08ID:qrHoZZWXM
ナルポ
0219デフォルトの名無しさん (ワッチョイ 7f5b-agOw)2016/12/23(金) 13:55:25.72ID:lJhRFWoH0
まぁ組込屋ならアドレス操作に関しては譲れないだろう
とことん争うべき。
0220デフォルトの名無しさん (ドコグロ MM1f-PK0Z)2016/12/23(金) 14:06:35.32ID:VjYtccRDM
>>219
#pragma とか言い出すような知ったか君を苛めるなよ
0221デフォルトの名無しさん (アウアウカー Sa5f-GvIT)2016/12/23(金) 14:26:08.94ID:AC5C5wbVa
規格外で良いならposixのMAP_FAILEDは特別な意味を持つな
これもポインタに即値代入するケースか
0222デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 15:23:46.69ID:tydkaaKw0
>>221
MAP_FIXED のことか?
0223デフォルトの名無しさん (エーイモ SEff-cm93)2016/12/23(金) 17:18:18.80ID:Nly1KFTtE
指定した位置の文字をヌル文字に変更したいんですが
例えば先頭の文字をヌル文字に置換するためにこういう風に書くと何も表示されなくなりました
どうやって置換するんでしょうか?

#include <stdio.h>

int main()
{
char name[3] = "abc";
name[0] = '\0';
printf("%s", name);

return 0;
}
0224デフォルトの名無しさん (アウアウカー Sa5f-GvIT)2016/12/23(金) 17:31:00.56ID:iWTFjrQCa
>>222
mmap失敗時の返り値
0225デフォルトの名無しさん (ワッチョイ 0f9b-uRrA)2016/12/23(金) 17:31:00.70ID:XErTRk4H0
何が表示されて欲しいのか

" bc"と表示されて欲しいなら、スペースを入れればいい
char name[4] = "abc";
name[0] = ' ';
0226デフォルトの名無しさん (ワッチョイ 374f-i5Qz)2016/12/23(金) 17:31:29.90ID:uHrKWqOK0
%s は 頭から \0が見つかったら表示を打ち切る
だから name[0] = '\0' の代入を実施すると 表示はそこで打ち切られる=何も表示しない

printf("[%c][%c][%c]", name[0], name[1], name[2]);
0227デフォルトの名無しさん (ブーイモ MM3f-rd4d)2016/12/23(金) 17:32:23.44ID:0Ly89bEjM
Cの文字列は'\0'終端なんだから当然
name[1]='\0';ならaが表示されるだろ
0228片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKdf-t2A3)2016/12/23(金) 17:33:50.58ID:3xdKhrkhK
>>223
C文字列はヌル文字を文字列の終端として解釈される。
つまり、ヌル文字があったら、そこで文字列の終わりと見なされる。
確認したいなら一文字ずつスキャンするか、ヌル文字の後のアドレスを指定する。
0229デフォルトの名無しさん (ドコグロ MM1f-PK0Z)2016/12/23(金) 17:35:48.73ID:LZUt3xBXM
>>224
意味わからん...
0230デフォルトの名無しさん (アウアウイー Sa4f-T2iK)2016/12/23(金) 17:39:23.32ID:3aRx8Kt+a
当然とは言うが文字列をナル文字で終了させないプログラマーは割といてだな…勘弁してほしい
0231片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK6f-t2A3)2016/12/23(金) 17:42:56.09ID:3xdKhrkhK
ちなみに、C++文字列(std::string)は、長さのデータを持っていて、ヌル文字を含むバイナリーデータを格納できる。
0232デフォルトの名無しさん (ワッチョイ 6717-g1cW)2016/12/23(金) 17:55:32.26ID:sMdCo7/p0
fwrite() を使えと誰も言わないのは休日ゆえか
0233デフォルトの名無しさん (ワッチョイ 633c-i5Qz)2016/12/23(金) 18:18:02.05ID:te4/+lr90
>>230
バッファサイズを渡して、そのサイズ内で打ち切る系は
\0 を含んでバッファ内に収めるのか
\0 を含まずにバッファ内に収めるかで変わってくるねー
0234デフォルトの名無しさん (ワッチョイ 7bdc-aVNS)2016/12/23(金) 19:51:00.33ID:RXSiKULR0
>>223 の質問の本筋とは関係ないことだけど、
char name[3] = "abc"; // 文字列の格納先としては配列の要素が不足
という間違いを

>>225 の回答では何の説明もなく
char name[4] = "abc"; // 終端の'\0'の分まで配列を確保
と当然のごとく修正してるのがちょっと面白い。
0235デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 20:09:49.80ID:tydkaaKw0
>>234
> という間違いを
勝手に間違いにするなよ w
そもそもそういう風に修正するなら
char name[] = "abc";
の方がいいと思うぞ
0236デフォルトの名無しさん (ワッチョイ 03e7-zpPG)2016/12/23(金) 20:28:16.26ID:OyCrFhmq0
いや、間違いだろ
直後にprintfで%s使ってる以上、文字列として扱わないかもしれないとかいう逃げ道もないし
まさにNULL終端を理解してないのがやらかす典型以外の何物でもない
0237デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/23(金) 20:33:12.35ID:kORjsFtN0
移植性の話が飛び出して#pragmaが出て来る謎
#pragma自体がコンパイラ依存の移植性が無いものなんだが
0238デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 20:48:02.31ID:tydkaaKw0
>>236
>>223 が何をやりたかったのかは不明だが
> name[0] = '\0';
ってやってるから規格上間違いなんて無いんだが?
0239デフォルトの名無しさん (ワッチョイ 0f9b-uRrA)2016/12/23(金) 21:35:50.37ID:XErTRk4H0
>>238
" bc"と表示させたい場合は問題になるからね
説明を端折ったのは悪かった
0240デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/23(金) 21:38:34.15ID:tydkaaKw0
>>239
> " bc"と表示させたい場合は
だからそんな仮定を勝手に置いて語るなよ
って話
0241デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/23(金) 22:15:09.83ID:kORjsFtN0
>" bc"と表示させたい場合は
printf("%s", name + 1);
0242デフォルトの名無しさん (アウアウカー Sa5f-GvIT)2016/12/23(金) 22:50:58.33ID:2lE868uqa
>>239
精度指定で出力を2byteに制限すれば、問題にならないけど?
0243デフォルトの名無しさん (ワッチョイ f742-g1cW)2016/12/23(金) 22:56:31.22ID:N7+vTzlD0
printf(" %s", name + 1);
0244デフォルトの名無しさん (ワッチョイ 377b-3tOZ)2016/12/23(金) 23:38:23.33ID:kZ6vwWWk0
>>183
バカにはわからないようだが、初期化するにはそのための初期化データが必須
その分オブジェクトが肥大する
0245デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/23(金) 23:51:06.24ID:kORjsFtN0
> 指定した位置の文字をヌル文字に変更したいんですが
もしかして、
指定した位置の文字を半角空白文字にとして表示したいんですが
の間違い???
だとしたらそもそもの質問が間違えてるのだから的を得ない解答が返ってきても仕方がない話
0246デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/23(金) 23:58:32.12ID:kORjsFtN0
グローバル変数でもゼロ初期化前提でコーディングするのは行儀が悪いコーディングだな
Cでは静的初期化でも動的初期化でも、変数にアクセスする際は必ず初期化するべし
0247デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/24(土) 00:04:06.50ID:13QAQt3w0
>>244
実際にやってみろよ0で初期化を。
0248デフォルトの名無しさん (ワッチョイ 7f5b-agOw)2016/12/24(土) 00:19:10.39ID:R0w0jZmS0
宣言時に必要の無い初期化をしても意味が無い。
無駄な処理
0249デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/24(土) 00:21:05.86ID:1i4c8FXF0
宣言時に必要の無い初期化は宣言時にする必要はない
しかしアクセス前には必ず初期化はすることグローバル変数でも
0250デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/24(土) 00:23:33.58ID:13QAQt3w0
>>248
お前 ID:kZ6vwWWk0 ?
だったら主張変わってるけど?
0251デフォルトの名無しさん (ワッチョイ 7f5b-agOw)2016/12/24(土) 00:25:21.25ID:R0w0jZmS0
勘ぐり過ぎ
0252デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/24(土) 00:28:57.07ID:13QAQt3w0
>>251
じゃあ関係ない話横から突っ込まないでくれる?
0253デフォルトの名無しさん (ワッチョイ 7f5b-agOw)2016/12/24(土) 00:32:14.62ID:R0w0jZmS0
>>246
>>248
>>249

の話だ。 病院行ったが良いぞ
0254デフォルトの名無しさん (ワンミングク MM5f-DNID)2016/12/24(土) 00:36:45.83ID:kPI05Gb3M
変数の配置セグメントBSS か DATA か?なんて環境によるだろうに
0255デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/24(土) 00:43:03.01ID:13QAQt3w0
どこに配置されようがローカル変数意外は0で初期化されることが規格で保証されている。
0256デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/24(土) 02:44:39.65ID:13QAQt3w0
非ローカル変数を0で初期化するコードを書いても書かなくても生成されるコードに違いはない余程のマヌケなコンパイラじゃない限りな。

非ローカル変数に初期化書かないポリシーだというなら別にそれで構わん、
それが癖になってローカル変数で初期化忘れたとか、それを中途半端に真似した初心者とかが未定義動作踏もうが、それはお前の責任だ。

しかし、間違った理由、もしくはお前の環境ローカルの常識で書かない事を強制させるような事を言うのは止めろ。
0257デフォルトの名無しさん (ワッチョイ 0f3c-i5Qz)2016/12/24(土) 05:25:54.05ID:HU8wPv9h0
whileの行で「宣言が正しく終了していない」とエラーが出てしまいます
ループさせる文もおそらくうまくいかないと思われます
疑似言語をC言語化しようとしてるんですが
購入[K[.品番=対象[T].品番
という購入と対象という2つの異なる配列の配列品番や配列数量を
分岐させたり代入させたりしたいです
何かわかりづらくなりましたが要するにいくつも項目が並んでる表を操作したいわけです
疑似言語をC言語化すること自体無理なんでしょうか?

while(K>0,T<=taishougyousu){
if(sinaban[kounyu[K]]=sinaban[taishou[T]]){
};
suryou[taishou[T]]=suryou[kounyu[K]];
K=ptr[K];
T=T+1;
if(sinaban[kounyu[K]]<sinaban[taishou[T]])
K=ptr[K];
else
T=T+1;
}
0258デフォルトの名無しさん (ワッチョイ 633c-i5Qz)2016/12/24(土) 05:33:12.41ID:y7L7nGQ60
while よりの前の記述がおかしいだけだと思うけど
} が足りないとか ) が足りないとか ; が足りないとか そういう類のミス

http://codepad.org/R7TdNtU5
0259257 (ワッチョイ 0f3c-i5Qz)2016/12/24(土) 06:07:13.20ID:HU8wPv9h0
レスありがとうございます
教えていただいた構文でも同じエラーが出るみたいなので
おそらくはwhileで論理積を使った2つの条件指定か
if(sinaban[kounyu[K]]=sinaban[taishou[T]]){
};
あたりの二重の[ ]が無理だと思われます
なのでかなり崩した構文を書かないと疑似言語をC言語化できないと考えます
0260デフォルトの名無しさん (ワッチョイ 633c-i5Qz)2016/12/24(土) 06:20:49.37ID:y7L7nGQ60
2重の[] は関係ないし 普通に使えるし
Cの文法学びなおしな
0261デフォルトの名無しさん (ワッチョイ 7bdc-aVNS)2016/12/24(土) 07:32:09.82ID:0UyY/BKM0
「宣言が正しく終了していない」ってエラーメッセージが怪しい。
>>258 の言う通り、whileの直前の行で変数を宣言してて
そっちの行末に ; をつけ忘れたとかの定番パターンだと思う。

ところで while の条件 (K>0,T<=taishougyousu) だけど、
「Kが0より大きい、かつ、Tがtaishougyousu以下」という意図なら
カンマ演算子でなく論理積 && を使うべきところだね。
while (K>0 && T<=taishougyousu) ...
文法的にはエラーじゃないせいで見落としやすいかと、あえて指摘させてもらう。
0262デフォルトの名無しさん (ブーイモ MM3f-AvAH)2016/12/24(土) 07:43:22.63ID:+wOpvYJrM
whileの{}とif(shin...の{}がオーバーラップしてんな
意図が分からない
0263デフォルトの名無しさん (ワッチョイ 8f13-i5Qz)2016/12/24(土) 07:44:23.26ID:XrRMaYjq0
>>247
だから馬鹿にはわからない,といっているだろう?しつこいな
0264デフォルトの名無しさん (ブーイモ MM3f-AvAH)2016/12/24(土) 08:04:35.38ID:+wOpvYJrM
まだやってんのかよ
・規格では静的変数はゼロ初期化が保証されてる
・だが初期値を書いた方が品がよいとされる。組込など省略される場合もあるので
・まともなコンパイラなら0初期値入れても最適化するからコードは増えない
コンパイルしたコード見りゃわかるだろ
0265デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/24(土) 08:52:08.40ID:dPbQS77J0
> while(K>0,T<=taishougyousu){
みたいに無理矢理一行に納めたがる(しかもたぶん意図と違う)とか
> };
のような無駄な ; が入っていても平気な人にはCは向いてないと思う
0266デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/24(土) 09:11:12.49ID:13QAQt3w0
>>263
ほんと馬鹿には解らないってご自分で証明してくれてありがとうございます
0267デフォルトの名無しさん (ワンミングク MM5f-DNID)2016/12/24(土) 09:23:24.14ID:kPI05Gb3M
FEED C0DE
0268デフォルトの名無しさん (ワッチョイ f719-8bDS)2016/12/24(土) 10:08:41.97ID:RCbQY4X80
以後罵り合いが終わるまでこちらで

C言語なら俺たちに聞け パート0001
ttp://echo.2ch.net/test/read.cgi/tech/1341648926/
0269デフォルトの名無しさん (ワッチョイ 13a5-PUH/)2016/12/24(土) 11:29:52.52ID:Bp2kWppi0
色々経験すると、それぞれ言ってることは分かるんだけどね。
0270デフォルトの名無しさん (ワッチョイ 8f13-i5Qz)2016/12/24(土) 15:04:56.91ID:XrRMaYjq0
>>269
うんわかる
オブジェクトコードまで視点が到達している人
規格には書かれていないことだと喝破できる人
さまざまだね
0271デフォルトの名無しさん (アウアウカー Sa4f-6FRj)2016/12/24(土) 16:14:51.30ID:1LCBxinAa
グローバル変数は初期化してもしなくてもオブジェクトサイズ変わんないでしょ?コンパイラとリンカで配置されるときに0クリアされるか値を指定されるかの違いだけで。
0272デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/24(土) 16:27:26.01ID:13QAQt3w0
>>271
0で初期化するかそれ以外の値で初期化するかでサイズは変わる。
バカには理解出来ないみたいだけど
0273デフォルトの名無しさん (ワッチョイ 837b-DNID)2016/12/24(土) 16:28:07.97ID:DNE92dFu0
BSSはプログラムローディング時にOSが割り当てる
DATAはリンク時に初期値が確定する。
VCだとデバッグビルドの時は0初期化されているが、リリース版で
保障されている訳ではない

ちなみにFE ED C0 DE は OS-9/680x0 がアプリケーションに
メモリを割り当てした時にパディングするパターン。
WINDOWSにも独自のパターンがあるので調べてちょ

COFFの資料
http://www.delorie.com/djgpp/doc/coff/scnhdr.html
0274デフォルトの名無しさん (ワッチョイ f742-g1cW)2016/12/24(土) 16:42:54.82ID:n3Z74Q5b0
>>272
グローバル変数って、0でするのと0以外でするので、オブジェクトサイズが変わるんですか?
サイズが変わるってことはsizeof使って分かりますか?
0275デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/24(土) 16:48:29.77ID:13QAQt3w0
>>274
流れからオブジェクトサイズというのはオブジェクトファイルのサイズの事を差してると解釈して言ったんだが(それ以外の話は出てきてない)お前は多分違う解釈してる。
オブジェクトファイルのサイズは生成されたコードのファイルのサイズ見れば解る
0276デフォルトの名無しさん (ワッチョイ 6b7b-zpPG)2016/12/24(土) 16:58:36.50ID:13QAQt3w0
>>273

Cの規格

5.1.2 Execution environments

All objects with static storage duration shall be initialized (set to their
initial values) before program startup.


初期値で初期化されることが規格で保証されてんの。
0277デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/24(土) 17:25:34.99ID:dPbQS77J0
>>271
変わるかどうかは処理系やコンパイルオプションによる
0278デフォルトの名無しさん (アウアウカー Sa5f-GvIT)2016/12/24(土) 17:45:51.34ID:AF3lgZMka
6.9.2 外部オブジェクト定義

翻訳単位が,ある識別子に対する仮定義を一つ以上含み,かつその識別子に対する外部定義を含まない場合,その翻訳単位に,翻訳単位の終わりの時点での合成型,及び 0 に等しい初期化子をもったその識別子のファイル有効範囲の宣言がある場合と同じ規則で動作する。

0で初期化するのと同じ規則で動作する、以外に規定はない。
仮定義を持たないために0でも必ず初期化するっていうのは、間違ってないと思う。
0279257 (ワッチョイ 0f3c-i5Qz)2016/12/25(日) 03:22:34.47ID:2jcHOLGG0
>>260
かなり時間がかかりましたが二重の[]でもエラーはなくなりました

>>261
{ と }の位置がおかしかったですね。あと最初の#で始まる関数の宣言が
おかしかったのとintで始まる配列の宣言がかなり足りなかったですね
&&は確かにその通りでカンマだと後者の条件を優先するループになるのかな

>>262
ifので条件がNOの方に分岐したところにまたifで分岐を作ろうとしたんですけど
あまり上手くいってません

>>265
いったい学生の頃をどこまで思い出せばいいのか。全部思い出すわけにはいかないし
C言語はほどほどにしておこうと思っています
0280デフォルトの名無しさん (ワッチョイ 0f7b-Ao4e)2016/12/25(日) 10:17:44.11ID:A+32p0u30
なんでオブジェクトファイルの話なのにだれも実際のアセンブリで比較しようとしないの?
0281デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/25(日) 10:18:09.86ID:UjprWodd0
>>280
したいならすれば?
0282デフォルトの名無しさん (ワッチョイ 837b-DNID)2016/12/25(日) 12:14:17.88ID:6QEq7FnE0
無駄
0283デフォルトの名無しさん (アウアウカー Sa5f-GvIT)2016/12/25(日) 12:20:44.64ID:/KLlwacta
>>280
規格の話をするのに処理系の実装は関係ないからな
常に一致するとまで言うつもりはないし、サイズの変わる処理系の存在も否定しない

個人的には、数十バイトを気にするような開発してないからどうでも良いわ
0284デフォルトの名無しさん (ワッチョイ 6b7b-TSM7)2016/12/25(日) 12:21:33.70ID:UjprWodd0
自分が間違ってた事を認識したら逃げるんじゃなくてちゃんとごめんなさいしてほしいよね。
バカには出来ないだろうけど。
0285デフォルトの名無しさん (ワッチョイ d37b-jVSv)2016/12/25(日) 12:40:31.64ID:/8TRU5/W0
>>279
疑似コードのほうを晒すとすんなり回答が得られると思うよ
0286デフォルトの名無しさん (ワッチョイ b719-tuBs)2016/12/25(日) 21:35:19.39ID:JV5w786K0
モジュールAからモジュールBにデータ(変数値)を引き渡す際に、
モジュールAの処理の中でモジュールBの関数(当該データを引数として実行する関数)を実装する(実装1)のと、
モジュールBの処理の中でモジュールAの関数(当該データをポインタで渡す関数)を実際する(実装2)のとで、
メリデメがあるものでしょうか?
0287デフォルトの名無しさん (ワッチョイ 837b-DNID)2016/12/25(日) 21:43:47.33ID:6QEq7FnE0
スタックに積むコスト分は違うな
8086のLモデルならセグメントオーバーライドのペナルティーも
発生するな
0288デフォルトの名無しさん (ワッチョイ b719-tuBs)2016/12/25(日) 21:49:52.41ID:JV5w786K0
>>287
すみません、理解できなかったのでもう少し詳細まで教えて頂けると助かります、、
対象としているシステムは組み込み系ですがx86系の話でも構いません
0289デフォルトの名無しさん (ワッチョイ 837b-DNID)2016/12/25(日) 23:07:36.56ID:6QEq7FnE0
例えばSuperHは
16ビット幅固定命令なので、32bitの値をイミディエイトでは生成
出来ないのでどこかに置く。置いた場所が±255以内になければ更にオーバーヘッドがかかる。実行時に邪魔になるので余分なjumpも入る。
ポインタで渡せばコストは想定可能。こちらの方が軽い場合が多い。
0290デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/26(月) 00:28:50.33ID:8ctcDGWr0
>>286
モジュールって言うのが関数なのかなんなのかよくわからん

> モジュールAからモジュールBにデータ(変数値)を引き渡す際に
と言うのは A から B を呼び出してるように思うから

> モジュールAの処理の中でモジュールBの関数(当該データを引数として実行する関数)を実装する(実装1)のと
は理解できるけど

> モジュールBの処理の中でモジュールAの関数(当該データをポインタで渡す関数)を実際する(実装2)のとで
はどう言うことなのかよくわからん
0291デフォルトの名無しさん (ワッチョイ ef9f-h9rX)2016/12/26(月) 01:04:31.98ID:9Yo0yJt10
俺なんかC言語で関数内関数を実装?JITってやつか?ってとこで躓いた
0292デフォルトの名無しさん (ブーイモ MM3f-AvAH)2016/12/26(月) 01:34:55.27ID:elmy+i1AM
案1
Axx(){
Bxx(data);
}
案2
Bxx(){
data = Axx();
}
ってことじゃねーのかな?
正直好きにしろとしか
0293デフォルトの名無しさん (ワッチョイ 6f68-YPDL)2016/12/26(月) 10:50:12.71ID:+6Dna25w0
>>286
Aに実装する場合はAがB依存になる
Bに実装する場合はBがA依存
Aが汎用的なモジュールならAに実装はしないかな俺なら
0294デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/26(月) 11:02:36.83ID:xO25f93t0
データは互いに疎結合の関係がよいよ
密結合だと後々の変更に耐えられなくなる
0295デフォルトの名無しさん (ワッチョイ 13a5-PUH/)2016/12/26(月) 22:41:47.74ID:xttRzHTo0
そうしたい気持ちは山々なのだが。
0296デフォルトの名無しさん (ワッチョイ a74e-qjDb)2016/12/26(月) 23:38:50.01ID:i5XrEMUf0
案1
Axx(){
 Bxx(data);
}

案2
Bxx(){
 Axx(&data);
}

って言ってるように読めるのだが違う気もする・・
0297デフォルトの名無しさん (ワッチョイ 6f68-YPDL)2016/12/27(火) 01:41:47.52ID:FYrmtqZh0
>>296ならこうか?
http://ideone.com/1Q9xPZ
やはりモジュール間の依存方向の違いぐらいじゃまいか?
0298257 (ワッチョイ 0f3c-i5Qz)2016/12/27(火) 05:09:12.95ID:32lhYaDn0
>>262
一度目のelseつまり一度目の分岐でNOに行く部分が上手くいってません
「elseの位置が誤っている」とエラーが出てしまいます
二度目のelseは上手く機能したのになぜでしょうか

while(K>0 && T<=taishougyousu){
if(sinaban[kounyu[K]]=taishousinaban[taishou[T]])
taishousuryou[taishou[T]]=suryou[kounyu[K]];
K=ptr[K];
T=T+1;
else
if(sinaban[kounyu[K]]<taishousinaban[taishou[T]])
K=ptr[K];
else
T=T+1;

}
>>285
疑似言語だと
■(K>0)and(T<=対象行数
|▲購入[K].品番=対象[T].品番
||・対象[T].数量←購入[K].数量
||・K←購入[K].ptr
||・T←T+1
|──                 ←この分岐のNOを現わすelseでエラー
||▲購入[K].品番=対象[T].品番
|||・K←購入[K].ptr
||──
|||・T←T+1
||▼
|▼
■
0299片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKdf-t2A3)2016/12/27(火) 05:12:59.82ID:GaV38g+FK
>>298
{ } で囲む。
0300デフォルトの名無しさん (ワッチョイ 0f3c-i5Qz)2016/12/27(火) 06:29:20.16ID:32lhYaDn0
{ }で囲むとエラーは出なくなりました
しかしelseの分岐が無視されifで指定した条件を満たしてなくても
条件がyesの方の文が実行されます。その後はwhileのループに戻ります
elseとelse ifどっちも試してみましたがどうしても条件がNOの文に飛んでくれません
ググってもC言語の本を読んでも分かりません。諦めた方がいいでしょうか
0301デフォルトの名無しさん (ワッチョイ 0f9b-uRrA)2016/12/27(火) 06:35:04.84ID:Z7RkHQtm0
代入(=)じゃなくて比較(==)すべきなんじゃ?
0302片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK6f-t2A3)2016/12/27(火) 06:36:09.87ID:GaV38g+FK
if(sinaban[kounyu[K]]=taishous

代入になってる。=と==は間違いやすいから気をつけよう。
0303デフォルトの名無しさん (ワッチョイ 2703-T2iK)2016/12/27(火) 06:37:09.34ID:gKIG9FI00
==とかじゃなくて?
0304デフォルトの名無しさん (ワッチョイ 0f3c-i5Qz)2016/12/27(火) 06:44:49.79ID:32lhYaDn0
ありがとうございます。==にしたら無事に動きました

1行にこんなに時間がかかるなんてC言語は難しいですね
0305デフォルトの名無しさん (ドコグロ MMdf-BQyC)2016/12/27(火) 08:19:35.62ID:CVPZfFKkM
みんなの疑問:
なぜにわざわざ自分からめんどくさい言語を選んで文句言うかなぁ...
0306デフォルトの名無しさん (ワッチョイ 374f-i5Qz)2016/12/27(火) 09:02:08.38ID:JGKzPuHu0
分かってないのに手を出して火傷
0307デフォルトの名無しさん (ワッチョイ 0f9b-uRrA)2016/12/27(火) 09:29:18.27ID:Z7RkHQtm0
慣れの問題でしょ
ifで代入は教科書の定番になるくらいのミスだし
0308デフォルトの名無しさん (オッペケ Sr6f-vX8b)2016/12/27(火) 12:11:00.19ID:GZlBMBhCr
>>307
ワーニング出るから、普通、気づくだろうにな。
0309デフォルトの名無しさん (アウアウカー Sa3f-T2iK)2016/12/27(火) 12:13:48.19ID:z54J35DFa
代入に=を使ったのはなんでなんだろうな
=は比較のときに使うかもとは思わなかったのか
「やっべー=は代入に使っちまったよ。修正めんどいから比較は==でいいか」的な軽さを感じる
0310デフォルトの名無しさん (ワッチョイ f719-8bDS)2016/12/27(火) 12:34:08.28ID:ROG9Kex30
Fortranからの引継ぎらしいな。
Pascalは:=が代入らしい。
0311デフォルトの名無しさん (ワントンキン MM3f-5BdW)2016/12/27(火) 12:34:45.48ID:AOY0qlPhM
もしかして==ってCだけ?
おれCから入ったからなんの違和感もないけど
0312デフォルトの名無しさん (ワントンキン MM3f-5BdW)2016/12/27(火) 12:37:18.75ID:AOY0qlPhM
それか!
0313デフォルトの名無しさん (ブーイモ MMaf-XloP)2016/12/27(火) 12:40:30.23ID:ubQxao/9M
>>311
java も js も perl も C# やろ。
0314デフォルトの名無しさん (ドコグロ MM7f-l7jk)2016/12/27(火) 12:44:41.00ID:oa8lMfe3M
イコール記号は数学しか知らない人には比較演算子にしか見えないだろうね
その点はPASCALの:=とかBASICのLETが省略されてるという文法の方が分かりやすい
でも=と==を間違える人なんていないし、たいした問題じゃないな
0315デフォルトの名無しさん (ワッチョイ 9f7b-ecDe)2016/12/27(火) 12:46:42.55ID:jF9jTMAt0
関係演算子
https://ja.wikipedia.org/wiki/%E9%96%A2%E4%BF%82%E6%BC%94%E7%AE%97%E5%AD%90
0316デフォルトの名無しさん (ドコグロ MMdf-BQyC)2016/12/27(火) 12:56:13.43ID:CVPZfFKkM
>>307
慣れで解決するならコーディングミスの半分はなくなると思う
0317デフォルトの名無しさん (JP 0Hbf-i5Qz)2016/12/27(火) 13:43:58.56ID:gmRiJ4C2H
文字列から、Aのみを抜き出すにはどうすればいい?
#include <stdio.h>しか使ってはいけない・・・
0318デフォルトの名無しさん (ワッチョイ 374f-i5Qz)2016/12/27(火) 14:40:15.86ID:JGKzPuHu0
void foo(const char* str)
{
0319デフォルトの名無しさん (ワントンキン MM3f-5BdW)2016/12/27(火) 14:41:39.94ID:AOY0qlPhM
strstr使えないなら
forで回してstrncmpとか?
0320片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK6f-t2A3)2016/12/27(火) 15:27:16.37ID:GaV38g+FK
>>317
文字列を配列のように一文字ずつスキャンして、'A'があれば出力する。
0321デフォルトの名無しさん (ワッチョイ 374f-i5Qz)2016/12/27(火) 15:33:57.69ID:JGKzPuHu0
for ( ; *str; str++) { if (*str == 'A') printf("Aみつかった\n"); }
0322デフォルトの名無しさん (ガラプー KKdf-t2A3)2016/12/27(火) 16:03:47.52ID:GaV38g+FK
品番はしなばんでもひんばんでもOKか
0323デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/27(火) 17:00:28.00ID:LWrh44QV0
言語の記法、文法、構文に目を通さないで
いきなり書きつらって動かないとか
初歩中の初歩の初心者以下の質問ばかり
リファレンス見ろよで終わる話
0324デフォルトの名無しさん (ワッチョイ 675b-ny8H)2016/12/27(火) 17:06:13.73ID:W9hRCVzT0
スレチですがRで性別の列に男性だったら0女性だったら1を当てはめたい時どうすればよいのですか?
0325デフォルトの名無しさん (ブーイモ MM3f-rd4d)2016/12/27(火) 17:28:08.19ID:xkC8dUFKM
ああん?Rのスレは別にあるぜ?何が目的よ?
ヒント
> x <- c("おす","メス","メス","おす")
> x[which(x == "おす")] <- 0
> x
[1] "0" "メス" "メス" "0"
0326デフォルトの名無しさん (ワッチョイ cfc2-97H3)2016/12/27(火) 18:20:51.97ID:5xUcSPz40
ラニマル文字を画面に出力したいのですが、
どうやればいいんですか?
OSはWindowsです。
0327デフォルトの名無しさん (ワッチョイ 0fc1-g1cW)2016/12/27(火) 19:45:32.61ID:QDHa6Y2K0
ttp://katahiromz.web.fc2.com/ranimal/index.html
JISやISOに登録されてるの?
0328デフォルトの名無しさん (アウアウカー Sa5f-6FRj)2016/12/27(火) 20:46:01.24ID:Hi68lG1ma
unicode使えばできる
https://ideone.com/o1UT3m

コマンドプロンプトに出力するなら設定変えなきゃいけないようだけど
0329デフォルトの名無しさん (ワッチョイ ef9f-h9rX)2016/12/27(火) 20:51:52.42ID:HWF0hvOB0
printf("ラ゚リ゚ル゚レ゚ロ゚");
0330デフォルトの名無しさん (ブーイモ MM3f-AvAH)2016/12/27(火) 21:03:02.94ID:Nm37omeWM
ら�K
0331デフォルトの名無しさん (ドコグロ MM3f-pGfi)2016/12/27(火) 22:03:40.42ID:G3hy1KS4M
>>317
Aのみを抜き出したら、結果はAだろ。
0332デフォルトの名無しさん (ワッチョイ 7f5b-agOw)2016/12/27(火) 22:35:32.12ID:KYIhPrn60
BAKAYAROU
↓
BKYROU

にするって事じゃねえのか。
0333デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/27(火) 22:53:06.12ID:LWrh44QV0
#include <stdio.h>

int main(int argc, char **argv) {
char src[10] = "BAKAYAROU";
char dst[10];
char *p_src, *p_dst;

p_src = src;
p_dst = dst;

while (*p_src != '\0') {
if (*p_src != 'A') {
*p_dst++ = *p_src;
}
p_src++;
}

puts(dst);

return 0;
}
0334デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/27(火) 22:57:33.74ID:LWrh44QV0
バグ修正
puts()の前に「*p_dst = '\0';」を入れて下さい。
0335デフォルトの名無しさん (ワッチョイ d37b-jVSv)2016/12/27(火) 23:11:47.17ID:dJApz5DA0
do-while使えばいいのに
最短の文字列は\0のみ、つまり1文字は必ずあるのだよ
当然終端されてない不完全な文字列は除く
0336デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/27(火) 23:41:53.66ID:LWrh44QV0
do-whileバージョンに改変
#include <stdio.h>

int main(int argc, char **argv) {
char src[10] = "BAKAYAROU";
char dst[10];
char *p_src, *p_dst;

p_src = src;
p_dst = dst;

do {
if (*p_src != 'A') {
*p_dst++ = *p_src;
}
} while (*p_src++ != '\0');

puts(dst);

return 0;
}
0337デフォルトの名無しさん (ドコグロ MM1f-BQyC)2016/12/28(水) 07:17:18.44ID:taDaNIJQM
>>332
それなら 'A' を抜き取るとか取り去るって言ってほしいな
0338デフォルトの名無しさん (ワッチョイ 233b-pGfi)2016/12/28(水) 08:09:06.68ID:JN8lj6g40
ファイルに書き出したい!
別の文字列も試したい!

ってか、I/O は別にするんじゃないの?
0339デフォルトの名無しさん (ワッチョイ 374f-i5Qz)2016/12/28(水) 08:27:04.15ID:Dwxz1rif0
#include <stdio.h>
int main(int argc, char **argv) {
int ch;
while ((ch = getchar()) != EOF) { if (ch != 'A') putchar(ch); }
return 0;
}

ファイルけの入出力はリダイレクトで
0340デフォルトの名無しさん (ワッチョイ 7bdc-aVNS)2016/12/28(水) 17:05:52.51ID:Py23AHJA0
なんとなく宿題の手伝いをさせられてる気がするんだが。
0341デフォルトの名無しさん (ワッチョイ df17-g1cW)2016/12/28(水) 22:26:32.56ID:6NcUzOVy0
だね
0342デフォルトの名無しさん (ワッチョイ de5b-BD8y)2016/12/29(木) 07:47:06.97ID:agYvXZ6g0
double power(double x,int n)
{
double tmp = 1.0 while(n-->0) tmp *=x; retrun tmp;}
初心者で申し訳ないのですが教科書に載ってるこれがなぜちゃんと2乗で帰ってくるのかわかりません。               これだとwhile文が一回分少なくなりません?              n=2,x=3だったらtmp=3でかえってくるきがするのですが・・・
0343デフォルトの名無しさん (ワッチョイ 2b19-Eko0)2016/12/29(木) 07:54:55.61ID:UuSU3MmP0
>while(n-->0)
比較後にnが-1されるから正しいよ。
0344片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK5b-lF1b)2016/12/29(木) 07:55:37.60ID:4SBHJX0YK
>>342
n--は、--nとは違って、nを返し、副作用としてnを1だけ減少させる。
n--の評価はnだが、式を評価した後に減算する。
0345デフォルトの名無しさん (ワッチョイ de5b-BD8y)2016/12/29(木) 08:01:20.59ID:agYvXZ6g0
>>343
あー前置後置ってヤツですね!
わかりましたありがとうございます
0346デフォルトの名無しさん (ワッチョイ af22-VbmQ)2016/12/29(木) 08:16:33.70ID:uZde1oJB0
普通にエラーにならないか?それとも新しい構文が出来たのかな?
0347デフォルトの名無しさん (スププ Sdaa-AfM2)2016/12/29(木) 18:15:30.77ID:McFsgUodd
aはbの何%かを
全てint型のみ使って表現する方法を教えて下さい
もはや算数の質問かも
0348デフォルトの名無しさん (ワッチョイ 4613-Sa8B)2016/12/29(木) 18:27:21.91ID:jmDxh3ik0
>>347
(a * 100) / b
(a * 1000) / b
(a * 10000) / b
など好きな桁だけ
0349デフォルトの名無しさん (スププ Sdaa-AfM2)2016/12/29(木) 18:38:33.33ID:McFsgUodd
>>348
ありがとう
そうか先に乗算したらいいのか
先行き不安
0350デフォルトの名無しさん (ワッチョイ 4613-Sa8B)2016/12/29(木) 18:57:20.07ID:jmDxh3ik0
>>349
a が1000万とかおおきな数字だと桁あふれがあるかもしれないのは,要注意だよ
0351デフォルトの名無しさん (ワッチョイ 8a5b-N5TX)2016/12/29(木) 19:35:14.97ID:L0//uJAz0
アホみたいな質問したいなら初心者歓迎スレに行けよ。
んでそんなのに答えんなよ。
0352デフォルトの名無しさん (ワッチョイ 4ac2-iiJY)2016/12/29(木) 21:35:34.12ID:5z3LEr/z0
ferr()は使ってはいけないの?
0353デフォルトの名無しさん (ワッチョイ 0a17-4Ie9)2016/12/31(土) 00:48:00.41ID:d3m9z2RM0
何その関数?
0354デフォルトの名無しさん (ワッチョイ 8a3c-vnn7)2016/12/31(土) 08:11:57.75ID:RP5GqFRc0
ferror(), feof() あるいは独自関数?
0355デフォルトの名無しさん (ワッチョイ 8a5b-N5TX)2016/12/31(土) 18:06:01.48ID:1NxzN7Kr0
strlcpyを標準関数にするべきだな。
Cの偏屈委員会どもは死んでしまえ
0356デフォルトの名無しさん (アウアウカー Sa6b-vNeW)2016/12/31(土) 20:17:13.89ID:PqxctD7va
諦めてstrncpy_s使えよ
0357デフォルトの名無しさん (ワッチョイ 9ba1-pjmj)2017/01/06(金) 16:56:13.81ID:dF2ZN8YS0
マルチスレッド対応
0358デフォルトの名無しさん (ペラペラ SD3f-/Nb9)2017/01/06(金) 21:52:48.98ID:z/rf0TmkD
LTOオプションの感想をお聞かせください
0359デフォルトの名無しさん (ワッチョイ 5fab-HvS5)2017/01/07(土) 17:26:15.98ID:4AuueMBh0
malloc呼ばずにいきなりrealloc呼んでも確保できてるみたいなんだが
この書き方安全?
0360片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK3f-6Slv)2017/01/07(土) 17:46:45.60ID:ogQHxHufK
>>359
ANSI以降なら安全。
0361デフォルトの名無しさん (ワッチョイ ab7b-RU+3)2017/01/07(土) 17:48:24.54ID:2i81Owhj0
>>359
第一引数に渡すポインタがNULLのとき"のみ"malloc()と同等の動作となる
0362デフォルトの名無しさん (ワッチョイ df17-pn3f)2017/01/08(日) 01:19:27.15ID:LDH1W2Fk0
reallocって要は中でmallocしてコピーしてfreeしてるだけでしょ
可読性に疑問符はあるけど安全か安全でないかといえば安全
0363デフォルトの名無しさん (ワッチョイ bb7b-XpjH)2017/01/08(日) 02:12:57.97ID:LTVOs92T0
ちげーよ アホ
0364デフォルトの名無しさん (ワッチョイ 7b3c-HvS5)2017/01/08(日) 03:30:55.66ID:Nqw0FnK60
(malocの実装によるけど)同じポインタを返すこともかるから そう単純な話でもない
0365デフォルトの名無しさん (ワッチョイ df3c-JQu6)2017/01/08(日) 13:14:25.44ID:C9GVPqMv0
>>364
結構単純な話みたいよ
http://www.beedub.com/Sprite093/src/lib/c/stdlib/realloc.c
サイズ拡張時の malloc( ) が NULL 返した時の処理がバグってるけど
0366デフォルトの名無しさん (アウアウカー Sa3f-KJco)2017/01/08(日) 13:40:28.10ID:l5OOm04ca
>>365
glibcのソースでも読めば?
単純な話じゃないから
0367デフォルトの名無しさん (ワッチョイ df3c-JQu6)2017/01/08(日) 14:27:25.28ID:C9GVPqMv0
>>366
ソースはごちゃごちゃしてるけどやってることはそう複雑じゃないでしょ
http://osxr.org:8080/glibc/source/malloc/malloc.c
0368デフォルトの名無しさん (アウアウカー Sa3f-KJco)2017/01/08(日) 14:51:20.91ID:l5OOm04ca
>>367
ここで言う単純な話って、>>362だぞ
アルゴリズムが複雑か否かは問題にしていない

実際は後ろのchunkが空いているかとかで変わって、>>364の通り同じアドレスが返ることもある
0369デフォルトの名無しさん (ワッチョイ df9f-c1lT)2017/01/08(日) 14:56:25.79ID:p/kSxu/t0
>>367
最悪の場合はmallocしてmemcpyしてfreeなのは当然として
glibcだと肝は_int_realloc()だけどパッと見ではさっぱり分からん
複雑じゃないならちょっと解説頼む
0370デフォルトの名無しさん (ワッチョイ df3c-JQu6)2017/01/08(日) 15:04:37.73ID:C9GVPqMv0
>>368
> アルゴリズムが複雑か否かは問題にしていない
いったい何を問題にしてるんだろう...

> 実際は後ろのchunkが空いているかとかで変わって、>>364の通り同じアドレスが返ることもある
そりゃそう言う実装もあるわな
でもそれってそんな複雑な話か?
0371デフォルトの名無しさん (ワッチョイ 7b3c-HvS5)2017/01/08(日) 15:07:42.34ID:Nqw0FnK60
極力 memcpy せずに済むように工夫してあるからこその realloc だと個人的には思っている
100% malloc memcpy free で代用できるのなら realloc は不要ってことに
0372デフォルトの名無しさん (アウアウカー Sa3f-KJco)2017/01/08(日) 15:25:56.83ID:4o94KzMpa
>>370
>>362の言う通りの実装かどうかの問題
少なくとも、glibcは違う
0373デフォルトの名無しさん (ワッチョイ df3c-JQu6)2017/01/08(日) 15:32:07.85ID:C9GVPqMv0
>>369
・要求サイズ小さければサイズ変更だけ
・そのまま拡張できるなら拡張する
・次のチャンクを使って拡張できるなら次のチャンクと統合
・だめなら領域確保してコピーして(元の領域を)解放

中学程度の英語力 + Google翻訳 でコメント拾い読みすればわかるとと思う

特殊ケースでコピーを避けたりサイズによってコピー方法変えたりしてるからちょっと読み辛い所はあるけど
0374デフォルトの名無しさん (ワッチョイ df9f-c1lT)2017/01/08(日) 16:42:09.60ID:p/kSxu/t0
>>373
俺も似たような見解だけど、それだと>>365の指摘は見当違い(またはアスペ)で
>>372が正しいようだ
0375デフォルトの名無しさん (ワッチョイ df5b-O2rp)2017/01/08(日) 19:45:21.14ID:M5lCKC460
realloc をいきなり呼ぶこと自体が間違いだろ。
システムコールを呼ぶんだから、OSに依存するだろう。
0376デフォルトの名無しさん (ワッチョイ bb7b-XpjH)2017/01/08(日) 19:59:06.17ID:LTVOs92T0
↑↑↑↑↑↑
こいつ最高のアホ
0377デフォルトの名無しさん (ワッチョイ 5fc0-r3T7)2017/01/09(月) 07:01:50.03ID:OyKUGSou0
reallocでfreeされたら困る
0378デフォルトの名無しさん (ワッチョイ 1b79-IbiL)2017/01/09(月) 19:20:06.54ID:TY73MQez0
すみません麻雀計算プログラムを作ってるんですが(C言語のサイトのを参考に)
C言語をJavaに置き換えたいのですが

●C言語
kiriwake[p_kiriwake]=TOITU;kiriwake[p_kiriwake+1] =i,p_kiriwake+=2;

これをJavaに書き換えると次のような感じでいいのですか?
セミコロンとカンマの使い分けの意味がわからんのですが、、、
●Java
kiriwake[p_kiriwake]=Mentsu.TOITU.getInt();
kiriwake[p_kiriwake+1] =i;
p_kiriwake+=2;

あと、C言語で !tehai[i] みたいな配列の要素否定(配列はint型)
これって 配列の要素の値が 0だったらtrueって意味でよいのでしょうか?
0379デフォルトの名無しさん (ブーイモ MMff-aasi)2017/01/09(月) 19:31:26.95ID:ZrysDj50M
!0がtrue
0380デフォルトの名無しさん (ワッチョイ 1b79-IbiL)2017/01/09(月) 19:37:45.93ID:TY73MQez0
>>379
ありがとうございます!

int tehai[1]={0}だったら
!tehai[1] はtrueってことでよいですよね?

すみません、カンマとセミコロンの使い分けについても知りたいのですが。。。
0381380 (ワッチョイ 1b79-IbiL)2017/01/09(月) 19:41:24.91ID:TY73MQez0
もとい

int tehai[1]={0}だったら
!tehai[0] はtrueってことでよいですよね?
0382デフォルトの名無しさん (ワッチョイ 7b3c-HvS5)2017/01/09(月) 19:44:30.67ID:B6Fh/YAP0
その文だったら カンマもセミコロンも変わらない
むしろ何でカンマで記述したんだろう?と疑問に思うところ
0383デフォルトの名無しさん (ワッチョイ 1b79-IbiL)2017/01/09(月) 19:49:25.51ID:TY73MQez0
>>382
ありがとうございます!!!
Javaしかやったことなくて
疑問に思ってました。。。。

参考にさせてもらってるので文句いえないんですが。
0384デフォルトの名無しさん (ワッチョイ 7b3c-HvS5)2017/01/09(月) 19:52:46.44ID:B6Fh/YAP0
アルゴリズム追えてるならまだしも
片側の言語しかやってなくて、別言語を移植するのはうまい手ではない とだけ
0385デフォルトの名無しさん (ワッチョイ 1b79-IbiL)2017/01/09(月) 19:53:41.53ID:TY73MQez0
>>384
アルゴリズムおえてないっす。。。。(´・ω・`)ショボーン
0386デフォルトの名無しさん (ワッチョイ 1f3d-IbiL)2017/01/09(月) 23:32:02.05ID:3plbifW70
>>378
p_kiriwakeとかで検索すると、すでにjava用があるみたいだが(完成しているかどうかは知らんが)、
そっちは調査済み?
0387デフォルトの名無しさん (ワッチョイ 1b79-IbiL)2017/01/10(火) 01:21:20.69ID:TQQvtKe/0
>>386
ついさっき気づきました。
ちゃんと見てなくてすみません><

ありがとうございます!
0388デフォルトの名無しさん (ワッチョイ cf48-FA8G)2017/01/11(水) 00:33:31.51ID:yCTW6NdS0
fprintfでunicod出力できますか?
0389デフォルトの名無しさん (ワッチョイ cf48-FA8G)2017/01/11(水) 00:43:26.06ID:yCTW6NdS0
環境はwindowsのgccです
0390デフォルトの名無しさん (ワッチョイ cf48-FA8G)2017/01/11(水) 02:07:55.01ID:yCTW6NdS0
ICUで変換しなきゃなのかな?
�@sjisのテキストファイルfgets
�Aunicodeのテキストファイルfgets
両方の文字列結合してunicodeのテキストへ出力したいだけなんだけど、なかなかハードル高そう
0391デフォルトの名無しさん (ワッチョイ cf48-FA8G)2017/01/11(水) 02:28:22.06ID:yCTW6NdS0
あ、iconvってのがあるのね
こっちのほうが簡単かな?
明日試してみよ
0392デフォルトの名無しさん (ワッチョイ 0f7b-MPfw)2017/01/11(水) 04:59:56.93ID:s2WqCPuy0
Rubyでは、Iconv は標準ライブラリから削除された

普通はそのまま、多言語対応の、String#encode を使うけど、
日本語なら、NKF か、NKFのラッパーである、Kconv を使うこともある
0393デフォルトの名無しさん (ワッチョイ df17-pn3f)2017/01/11(水) 06:34:38.07ID:9AYGk8zp0
>>388
unicodeがUTF-16という意味ならば、fprintf()ではなくfwprintf()を使う必要がある。
非SJIS文字をコンソールウィンドウに表示したいという意味ならば、SetConsoleOutputCP()を使う必要がある。
0394デフォルトの名無しさん (ワッチョイ bb7b-XpjH)2017/01/11(水) 08:41:45.28ID:7JGhXUMg0
C言語スレで聞かれてもいないRubyの話とか
Ruby厨ってゴキブリのようにどこにでも現れるな 本当にウザい
0395デフォルトの名無しさん (JP 0Hff-HvS5)2017/01/11(水) 09:45:29.30ID:Kc9qpi7VH
noranを取り出すプログラム作りたいけど、どうすればいい?

入力例
ouninnoran
出力例
ounin
0396デフォルトの名無しさん (ブーイモ MMff-HTrg)2017/01/11(水) 10:50:42.14ID:YIxHFj66M
>>395
それは、取り出すじゃなくて、取り除くだろ
0397デフォルトの名無しさん (JP 0H3f-HCiS)2017/01/11(水) 11:43:13.25ID:9NELrAZMH
>>395
まず確認として、逆に付け足す方はできるのん?
それより数段難しいけど
0398デフォルトの名無しさん (ワッチョイ ab4e-JoNk)2017/01/11(水) 12:13:12.65ID:TbwwsfFk0
strstrでnoranのポインタ見つけたらその一個前までがounin
0399デフォルトの名無しさん (JP 0Hff-HvS5)2017/01/11(水) 12:21:43.61ID:SaAlt4gYH
scanf("%s %c", &name,&s);

if(!strcmp("M", s))

printf("Hi, Mr. %s", name);

else
printf("Hi, Ms. %s", name);

どこが間違ってる?
0400デフォルトの名無しさん (ワッチョイ 0f4f-HvS5)2017/01/11(水) 12:31:53.61ID:BpdW2SgI0
>>399 つっこみどころ満載やね
s の型は
char ならば strcmp で比較することがおかしい
char の配列ならば %c で受けるのがおかしい

そして scanf の第二引数は &name ではなく name
0401デフォルトの名無しさん (JP 0H3f-HCiS)2017/01/11(水) 14:00:06.55ID:9NELrAZMH
>>399
name, s の宣言をどこでどうやってるかまず明示
0402デフォルトの名無しさん (ワントンキン MMff-FA8G)2017/01/11(水) 16:57:22.11ID:/Ass4XCcM
>>393
ありがと
使いたいのはutf8でした
もう少し調べてみます
0403デフォルトの名無しさん (ワッチョイ c648-3wWY)2017/01/12(木) 13:25:08.18ID:N1lQGCCN0
入力ファイルAとBを事前にutf8で用意
fopenでABをオープン
_wfopenのパラメータにUTF-8を指定してファイルCをオープンしてすぐクローズ(空ファイル作成)
fopenでCをオープン
fgetで読んだABの中身をfprintfでCに出力
これでやりたかったutf8出力はできたけど
無理矢理すぎて残念な感じ
こんなソース人には見せたくないなw
0404デフォルトの名無しさん (ワッチョイ c648-3wWY)2017/01/12(木) 13:29:55.13ID:N1lQGCCN0
カンマ区切りのcsvのn番目の項目だけをutf8ファイルへ出力するだけなので、結果オーライだろうけどデータの中身が日本語でも対応できてる
0405デフォルトの名無しさん (JP 0H8b-CSNb)2017/01/12(木) 13:39:48.09ID:xegpw56ZH
ライブラリに押し込んで隠蔽して
もっともらしくドキュメント書けばおーけーよ
0406デフォルトの名無しさん (ワッチョイ c648-3wWY)2017/01/12(木) 13:44:40.28ID:N1lQGCCN0
まじかw
0407デフォルトの名無しさん (JP 0Hee-0Plu)2017/01/12(木) 15:04:44.33ID:Yxj3ejPrH
>>403
utf8を読んでutf8で書くだけなら_wfopenとか必要なくね

普通にfopenだけで動かんの?
0408デフォルトの名無しさん (ワッチョイ c648-3wWY)2017/01/12(木) 16:45:42.06ID:N1lQGCCN0
普通にfopenしたら新規ファイルがsjisになっちゃうのよ
0409デフォルトの名無しさん (ワッチョイ ff53-BvkP)2017/01/12(木) 17:44:41.69ID:TSKFHmJO0
>>408
バイナリー扱いでファイルcに出力できないのはbom関係から?
0410デフォルトの名無しさん (ドコグロ MM0a-f8hU)2017/01/12(木) 18:01:15.85ID:+/2k3owKM
UTF8にしたいのはファイル名?
0411デフォルトの名無しさん (ワッチョイ 2f3c-dHfL)2017/01/12(木) 18:15:42.76ID:wUE0uj5c0
>>390 では sjisのファイルと unicode のファイルを unicode として連結出力したい
>>403 では utf8のファイルA と utf8のファイルB を utf8のまま連結出力したい
0412デフォルトの名無しさん (ワッチョイ c648-3wWY)2017/01/12(木) 18:48:56.52ID:N1lQGCCN0
ファイル名じゃなくて、中身のコードをutf8にしたい
0413デフォルトの名無しさん (アウアウカー Sa5f-lBuY)2017/01/12(木) 18:51:37.14ID:yXBvqXfaa
文字コード変換ならwindowsならMultiToWide、WideToMultiみたいなAPIあったろ
それでsjis→ucs2?→utf8で変換出来るでしょ

コードをutf8にしたいなら、エディタで保存するときに文字コード選ぶか、c11なら文字列リテラルにu8つける
0414デフォルトの名無しさん (ワッチョイ c648-3wWY)2017/01/12(木) 18:52:20.67ID:N1lQGCCN0
あー、まずバイナリでBOM出力したらよかったのかもね
0415デフォルトの名無しさん (ワッチョイ c648-3wWY)2017/01/12(木) 18:56:15.99ID:N1lQGCCN0
>>413
二段階で変換するのか
ありがとー
0416デフォルトの名無しさん (ワッチョイ c648-3wWY)2017/01/12(木) 18:58:51.15ID:N1lQGCCN0
MultiByteToWideChar
WideCharToMulteByte
でいけるみたいね
ちょっと試してみる
0417デフォルトの名無しさん (JP 0Hf2-dHfL)2017/01/13(金) 10:59:17.59ID:A7lO7PxRH
int main(void){

char s;
scanf("%s", &s);
printf("Best in %s", s);
return 0;

}
ド素人です
どこが間違ってるの?
0418デフォルトの名無しさん (ワッチョイ 4f42-q48i)2017/01/13(金) 11:05:29.60ID:XrLKGNVx0
>>417
>char s;

この辺
0419デフォルトの名無しさん (ドコグロ MM0a-xe6k)2017/01/13(金) 11:06:07.22ID:zsb+1uUaM
include してないから?
0420デフォルトの名無しさん (ワッチョイ c3dc-0v0L)2017/01/13(金) 11:18:43.84ID:Aw2MqPlk0
>>417 とりあえず...
標準入力から1文字だけ取って表示したいなら、2か所の %s は %c と書く。

標準入力から単語を1個取って表示したいなら
char s; → char s[1024];
scanf("%s", &s); → scanf("%s", s);


んで、プログラムを書いたときに期待した動作と、
実行したときの実際の動作の食い違いを報告すれば
次のヒントを示せると思うよ。
0421デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/13(金) 11:21:49.39ID:76Aeg2JY0
>>420の言う事は信用しないように
> char s; → char s[1024];
特にこの辺
0422デフォルトの名無しさん (ワッチョイ b25b-QKPs)2017/01/13(金) 12:29:47.17ID:KHQIWhB30
批判するならちゃんと最後まで説明しろ
0423デフォルトの名無しさん (JP 0Hff-ws9s)2017/01/13(金) 12:32:11.51ID:TdrVgO0QH
だな
>>421は害悪
0424420 (ワッチョイ c3dc-0v0L)2017/01/13(金) 16:45:39.44ID:Aw2MqPlk0
確かにchar配列の大きさ決め打ちは良くないから >>421 の指摘はもっともなんだが、
この段階でscanfの読み取り量の上限指定書式とか説明しきれないじゃない。

そういう意味での「とりあえず...」という前置き。
もちろん完璧な解説をしてくれるなら歓迎するよ。
0425デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/13(金) 17:35:31.50ID:76Aeg2JY0
scanfで%sを使って文字列を読み込むとこは禁じ手
%1023s これを超初心者に教えるのは面倒

従ってscanfで文字列読み込むな!
が正しい解答
0426デフォルトの名無しさん (ワンミングク MMe2-3wWY)2017/01/13(金) 17:45:39.99ID:5IEqjpCWM
実際scanf使うことはないけど
勉強中はべつにいいだろ
最初はこかして覚えるもんだ
0427デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/13(金) 17:54:35.78ID:76Aeg2JY0
>>426
1000回死ね
0428デフォルトの名無しさん (ワッチョイ 677b-j+ca)2017/01/13(金) 18:01:09.72ID:530oYhD80
むしろ初心者のうちに身を持って覚えておかないと将来困る
最初から使うなというだけでは勉強にならないだろ
0429デフォルトの名無しさん (ワンミングク MMe2-dqLr)2017/01/13(金) 18:07:58.33ID:kKg87s4oM
>>426
それで、char s[1024]; にしたらこけて覚えるか?
覚えないだろ、勉強中に1024以上入力する事なんてないだろうから。
そうやって「自分の動かす範囲では動いてる」で進むのが良いとは思わんね
0430デフォルトの名無しさん (ワッチョイ 1f85-y9rD)2017/01/13(金) 18:12:45.77ID:hu5eqRYQ0
最初から fgets() に絞っておく、という教科書がそろそろほしいものだ
C の標準関数は洗練されていない
0431デフォルトの名無しさん (ワッチョイ 677b-j+ca)2017/01/13(金) 18:20:09.29ID:530oYhD80
こけるかどうかよりもバッファの配列の存在を意識することが大切
実際にscanfで文字列を扱う経験のなかから危険性も理解できるようになる(はず)
0432デフォルトの名無しさん (ワンミングク MMe2-dqLr)2017/01/13(金) 18:28:57.36ID:kKg87s4oM
>>431
知らないとバッファーに収まるように打ち切って格納してくれると思ってしまう可能性もあるだろ?(C++では実際そういう風に実装可能だし)

scanfで文字列取るのなんて実行時まで自分で面倒見ない限りどうやっても安全に使えないんだからその方法を教えること自体悪
0433デフォルトの名無しさん (ワッチョイ 2f3c-dHfL)2017/01/13(金) 18:35:16.24ID:VUlDSfWl0
余所言語を経験してて、この言語については初心者なのと
最初のプログラミング言語がこれでの初心者
どっちが取り扱うにしろ文字列周辺は面倒だな
0434デフォルトの名無しさん (ワッチョイ f37b-aKms)2017/01/13(金) 21:03:22.47ID:wdtBjSeo0
入力ストリームの食べ残しで頭悩ませる初心者が後を絶たないのはカビ臭い本のせいだな
printf()の対だから…なんて安易な考えでscanf()を使っているとしか思えないが
scanf系は元々csvとか帳簿みたいな固定長あるいは固定フォーマットのレコードを処理するために用意されたものだから
そういう「入力が既知のケース」ではとても便利なのでガンガン使っていいけど
何が来るかわからない一方通行の入力ストリームに対してはあまりに使いにくい
変換失敗しただけでも食べ残して次の入力になっちゃうから行儀が悪い
だから改行もちゃんと食べきるfgets()のほうがやり直しも含めて簡単なんだよな
0435デフォルトの名無しさん (ワッチョイ 7e13-dHfL)2017/01/13(金) 21:10:12.65ID:nYJUER3p0
そうそう,fgets() だけでいい
0436デフォルトの名無しさん (ワッチョイ 12cb-q48i)2017/01/13(金) 21:44:57.26ID:3pfgPUNA0
scanfの使えなさを実感させてた上で「使うな!」って言わないと。
0437デフォルトの名無しさん (JP 0H8b-CSNb)2017/01/14(土) 14:22:47.29ID:Xw0trSpZH
printf とか scanf とか自分で間違いを自覚できずに迷路にハマるやつは
初心者に使わせるべきではない
0438デフォルトの名無しさん (ワッチョイ 4f42-q48i)2017/01/14(土) 14:25:06.53ID:NOILgRtm0
「使うな」じゃなく、安全に使えるものを提供してやれよ
0439デフォルトの名無しさん (ワッチョイ 4f19-YL17)2017/01/14(土) 14:57:58.01ID:YpbmANTj0
問題が生じる実例を出して「だから使ってはいけない」って言えよ。
どこぞのパヨクじゃあるまいし。
0440デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/14(土) 15:05:14.99ID:8QfSwFFH0
>>439
やってはいけない事を形式的に理解する
やってはいけない理由を理解する

前者の方が圧倒的に簡単でオレはそれをした
後者は必要だと思ってるお前がやれ
0441デフォルトの名無しさん (ワッチョイ 12cb-q48i)2017/01/14(土) 19:18:27.21ID:FAvcV6GF0
2chで質問/反論するなんてドMかと。
0442デフォルトの名無しさん (ワッチョイ b25b-QKPs)2017/01/14(土) 21:25:43.12ID:aI5T4zHh0
C言語は使い手が間違った使い方をしないのが前提だからな。
scanfも間違った使い方をしなければ良いだけだ。

Cに関しては間違うやつが悪い。
0443デフォルトの名無しさん (ワッチョイ 1f76-L1LG)2017/01/14(土) 22:06:39.99ID:nnhGfmGJ0
programmers know what they are doing
いい言葉だ
0444デフォルトの名無しさん (JP 0H8b-CSNb)2017/01/14(土) 22:47:19.07ID:Xw0trSpZH
間違うやつ=初心者 に使わせることそれ自体が間違い
0445デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/14(土) 22:59:33.68ID:8QfSwFFH0
間違った使い方しか出来ないgetsなんてのもある

口だけパヨクの>>439は逃亡か
0446デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 13:44:50.20ID:HYjV15pa0
>>445
> 間違った使い方しか出来ないgetsなんてのもある
意味わからん
0447デフォルトの名無しさん (ワッチョイ 4f19-YL17)2017/01/15(日) 14:16:13.20ID:2Jcq20M50
宗教戦争勃発!
0448デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 15:55:29.90ID:T6BZe6fz0
>>446
頭悪いんじゃ無い?
0449デフォルトの名無しさん (ワッチョイ 3217-q48i)2017/01/15(日) 16:04:27.74ID:6p/gvNbZ0
A. 頭悪いヤツが悪い
B. 頭悪いヤツでも使えるようにしないヤツが悪い

いかにして上記のAとBで相反する主張を巧みに使いこなし他人に責任転嫁するかってのが処世術。
0450デフォルトの名無しさん (ドコグロ MM3e-lGK7)2017/01/15(日) 16:23:27.09ID:YYhy4dGbM
>>448
こういう論争はだいたい言い切る奴が頭悪いって結論だが w
0451デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 16:43:00.41ID:T6BZe6fz0
>>450
たった一行の
「間違った使い方しか出来ないgetsなんてのもある」
の意味がわからないのは頭が悪い可能性がとてつもなく高い
例外として日本語が不自由
0452デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 17:14:18.31ID:HYjV15pa0
>>451
> 「間違った使い方しか出来ないgetsなんてのもある」
> の意味がわからない
マジで言ってるなら相当頭悪いわ w
どうせ入力が溢れることを防げないとか思ってるんだろうけど常に防げないと思ってるなら経験値が無さすぎ
0453デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 17:21:42.54ID:T6BZe6fz0
>>452
頭悪い本人? 横レスなら引っ込んでろ
0454デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 17:23:45.52ID:OwCHVx6x0
>>452
経験値があったら安全に使えるのか。
凄いねそのお前の経験値が他の人にもあったら規格から削除されることもなかったのにね。
0455デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 17:44:54.96ID:HYjV15pa0
>>453
横レス?
ID も見てないアホですか? w

>>454
> 経験値があったら安全に使えるのか。
使えるだろ
使えない理由がないわ

> 凄いねそのお前の経験値が他の人にもあったら規格から削除されることもなかったのにね。
バカなの?
使える機会が少ないとか >>445 みたいなアホが多いとかで廃止されてるだけだろ
0456デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 18:08:37.56ID:T6BZe6fz0
>>455
それじゃ、意味わからないおバカさんに解説してあげよう

「間違った使い方しか出来ないgetsなんてのもある」
は
「getsには正しい使い方は存在しない」って意味だよ
0457デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 18:39:14.60ID:HYjV15pa0
>>456
ぼくはまちがったつかいたかしかしりません
の間違いだろ w
一行の長さが保証されてるならなんの問題もない
0458デフォルトの名無しさん (ワッチョイ b217-sWU2)2017/01/15(日) 18:40:53.31ID:egsq+OIB0
まともな頭があると思ってるならスレタイを何度か読み直してみてくれよ。
0459デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 18:46:49.06ID:T6BZe6fz0
「間違った使い方しか出来ないgetsなんてのもある」
は
「getsには正しい使い方は存在しない」って意味だって言う事がわかったかな?

これがわからないと言うから、頭悪いと言ったんだよ
0460デフォルトの名無しさん (ワッチョイ f619-vSov)2017/01/15(日) 19:14:33.27ID:R1qhOvTe0
ゲッツ!
0461デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 19:23:11.75ID:OwCHVx6x0
標準入力をどうやって一行の長さを保証すんだよ
このプログラムへの入力は一行にN文字までにしてね!
ってどこかに書いておくのか。アホらしい。
そんな設計が正しいと信じてるならお前にとってはそれが正しい使い方なんだろうね。
0462デフォルトの名無しさん (ワッチョイ b25b-QKPs)2017/01/15(日) 19:32:26.13ID:GuIWlHA40
作り手も使い手も間違わないって考えで作られたのがC言語だから。

初心者が使う言語ではないし、初心者に使わせる言語でも無い。
プロのプログラマーが作って、プロのオペレーターが使うのを想定してる。

間違うのが怖いならベーシックでもやってろよ
0463デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 19:34:16.82ID:OwCHVx6x0
因みに俺の思う正しい設計の一つ(ケースに依るので)は想定以上のサイズのデータが入力された場合エラーメッセージを吐いて死ぬだ。

断じて動いてるように見えるけど実は結果が壊れてるとかではない。
0464デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 19:42:52.00ID:T6BZe6fz0
>>450
ほら、トンデモない馬鹿だったろ

> 一行の長さが保証されてるならなんの問題もない
0465デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 19:45:03.38ID:OwCHVx6x0
>>462
明らかに使い方を間違えていると解るのであれば、正しくエラーメッセージを出力するように実装するのがプロのプログラマ
結果が予測できないような実装になるのは未熟すぎる。
getsを使うようなプログラマにプロの仕事は出来ないよ
0466デフォルトの名無しさん (ワッチョイ 4f42-q48i)2017/01/15(日) 19:45:49.89ID:YV5ExKYS0
文字数制限を設計時にすれば間違いとは言えない、気がする
「暴走する?仕様です笑」
0467デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 19:47:26.89ID:T6BZe6fz0
>>461
行の長さをチェックしつつ全部読んで、中間ファイルに書き出し、それをfreopeして大爆笑
0468デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 19:50:33.37ID:HYjV15pa0
>>461
はあ?
仕様って知ってるか? w
自分が出力したデータを読むとかも想定できないのかよ
0469デフォルトの名無しさん (ワッチョイ b25b-QKPs)2017/01/15(日) 19:52:34.93ID:GuIWlHA40
>>465
時代が違うし、用途が違う。
getsでも十分なバッファを用意しておけば良いだけの事だろう。

たいてい特定のコマンドとかしか入力しないんだから、
何文字以上入力するなって言っておけば良いだけの事。

たぶん君は若いんだよ。
古い人間はプログラム側を信用するのも危険って知ってる
0470デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 19:57:58.30ID:HYjV15pa0
>>465
バカはこれだから w
仕様通りの動作をするように組むのがプロだよ
そもそも常にメッセージ出せるわけでもないし
0471デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 19:58:19.95ID:T6BZe6fz0
>>468
ぷぷぷ
そのような頭悪い強結合の設計は「正しく無い」ので、その設計に基づいたgetsの使い方もまた正しく無い
0472デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 19:59:08.85ID:HYjV15pa0
>>467
いちいちバカを晒さんでいいぞ
0473デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 20:00:39.95ID:OwCHVx6x0
>>469
そのわざわざ信用出来ないプログラムを書くのが
0474デフォルトの名無しさん (ワッチョイ 329f-3X21)2017/01/15(日) 20:01:45.76ID:Q6BJ1v/20
getsを使うにはきちんとメモリ管理したり例外トラップしたりなにかと面倒だ
でも 「getsには正しい使い方は存在しない」 は言い過ぎだな
0475デフォルトの名無しさん (ブーイモ MMd2-yP9u)2017/01/15(日) 20:02:02.25ID:Hg/wNX2QM
c11で削除されたんだしもういいだろ
0476デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 20:02:12.06ID:OwCHVx6x0
>>470
予測不可能な動作をするより前に死ぬ事が大事って事が解らんのかね?
0477デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 20:03:43.43ID:HYjV15pa0
>>471
> そのような頭悪い強結合の設計は「正しく無い」ので、その設計に基づいたgetsの使い方もまた正しく無い
オレオレ定義乙 w
0478デフォルトの名無しさん (ワッチョイ b217-OYug)2017/01/15(日) 20:05:28.16ID:GJnk2lJp0
この関数の作者が単に思慮が足りない馬鹿だったのかマッドサイエンティストだったのか気になるね
0479デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 20:09:08.86ID:OwCHVx6x0
>>478
当時はプログラムを作成するのも実行するのも限られた人のみでセキュアコーディングなんて考えかたはかけらも存在しなかったから仕方ない。

でも今の時代に当時のままの感覚で語るのはただの老害
0480デフォルトの名無しさん (ワッチョイ 4f42-q48i)2017/01/15(日) 20:12:35.26ID:YV5ExKYS0
そういう人にはCは向かない
0481デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 20:16:05.03ID:HYjV15pa0
>>476
で?
仕様外の動作においてなにが大事かどうかはケースバイケース
常に
> 明らかに使い方を間違えていると解るのであれば、正しくエラーメッセージを出力
が正しいと思ってるならそれこそ経験値が無さすぎ
0482デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 20:20:49.82ID:T6BZe6fz0
>>477
今度は強結合がわからないらしい 大爆笑
0483デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 20:23:07.07ID:T6BZe6fz0
>>474
それを否定したけりゃ、正しい使い方を例示すれば良い
ID:HYjV15pa0のようにオツムの程度を晒す事になるが
0484デフォルトの名無しさん (ワッチョイ 72c1-SqzF)2017/01/15(日) 20:23:33.96ID:p20o/xdu0
勢いwwww
0485デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 20:23:44.28ID:OwCHVx6x0
>>481
エラー発生時に終了するより未定義動作につっこむ方が大事だと?
0486デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 20:24:25.56ID:T6BZe6fz0
>>485
ID:HYjV15pa0はそうらしい w
0487デフォルトの名無しさん (ワッチョイ 4f42-q48i)2017/01/15(日) 20:24:39.42ID:YV5ExKYS0
もう、ネタでやっているとしか思えない
0488デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 20:42:59.44ID:T6BZe6fz0
ID:HYjV15pa0のためにgetsの正しい使い方を考えてあげるスレでも立てるか
0489デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 20:43:41.42ID:HYjV15pa0
>>482
> 今度は強結合がわからないらしい 大爆笑
勝手な解釈で勝利宣言 w
強結合だから正しくない
って言うのがオレオレ定義って言ってるんだが

>>483
入力の仕様を明示すればいいって書いてあるが?

>>485-486
ケースバイケースの意味がわからんのか?
0490デフォルトの名無しさん (ワッチョイ b25b-QKPs)2017/01/15(日) 20:45:30.80ID:GuIWlHA40
コンソールから入力できる1行の最大文字数なんて上限があるだろ。

今ならメモリなんか気にする必要ないんだから、
getsのバッファでそれ以上を用意しておけば良いだけだろう。
0491デフォルトの名無しさん (ワッチョイ b25b-QKPs)2017/01/15(日) 20:47:20.14ID:GuIWlHA40
Cはどういう使われ方をされるかわからないような
インターフェース部分に用いるべき言語では無いぞ。
0492デフォルトの名無しさん (ワッチョイ 7e13-dHfL)2017/01/15(日) 20:53:50.03ID:Z39GcWi70
fgets() 推奨,で終わりじゃなかったのか‥
0493デフォルトの名無しさん (ワッチョイ 6719-vSov)2017/01/15(日) 20:54:12.51ID:qtyi6+tl0
自分しか使わないならそれでいいだろ
0494デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 21:04:30.66ID:OwCHVx6x0
>>489
じゃあ未定義動作の方が大事っていうケース挙げてみてよ

>>490
古い人間ならパイプぐらい知ってるよね?
0495デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 21:09:13.71ID:OwCHVx6x0
別に書き捨てるプログラム前提だからとエラーチェックもせずに怠惰に書くことは自体は否定しないけど、それを正しいと言い張るのは違うと思うな
0496デフォルトの名無しさん (ワッチョイ 6719-vSov)2017/01/15(日) 21:13:49.97ID:qtyi6+tl0
間違った使い方が出来ないようにばかりすると
人はどんなものも間違った使い方ができないと思い込み
間違った使い方を出来てしまうものを間違って使い
命を落とすこともあるだろうから
間違った使い方ができるものも必要だよ
0497デフォルトの名無しさん (ワッチョイ b25b-QKPs)2017/01/15(日) 21:14:44.90ID:GuIWlHA40
バッファオーバーフローが怖いなら、Cを使うべきでは無いよ。
お茶をこぼすのが怖いなら、キーボードを使うべきでは無い。

潔癖すぎると生産できんがな。
getsを使ったプログラムなんてくさるほど運用されとるがな。
0498デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 21:16:00.54ID:OwCHVx6x0
>>496
間違った使い方しか出来ないものの話してるんですけど。
0499デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 21:20:38.41ID:OwCHVx6x0
>>497
セキュアコーディング全否定かよ。
お前がやろうとしないだけ(もしくは出来ないだけ)でまともなC言語使い未定義動作に突っ込まないように努力してんの。

この発言は老害としか言えねえな
仕事でC言語書いてるなら脆弱性発生器さんとも呼べるか
0500デフォルトの名無しさん (ワッチョイ 6719-vSov)2017/01/15(日) 21:24:08.33ID:qtyi6+tl0
安全が当たり前になりすぎて少しの間違った使い方にクレームを言い出す人が増えすぎたな
0501デフォルトの名無しさん (ワッチョイ b25b-QKPs)2017/01/15(日) 21:25:56.89ID:GuIWlHA40
「getsが間違った使い方しかできない」 ってのが間違いって言ってんだ。

オペレーターが注意する事でgetsのバッファオーバフローが防げるならそれで良いだろう。

何度も言うが、Cはそういう前提で開発された語だ。
プログラマーやオペレーターが間違ったら、基本的にそれを防げない言語なんだよ。

セキュアコーティングを目指すならCを用いるべきではない。
それこそ根本的に間違いだろう。
0502デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 21:26:45.21ID:OwCHVx6x0
>>500
そりゃ、間違ってることを正しいと主張されたら間違ってる事が広まって欲しくないからクレームだすよね。
0503デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 21:29:23.52ID:T6BZe6fz0
getsの正しい使い方を考えてあげるスレ
http://echo.2ch.net/test/read.cgi/tech/1484483294/
0504デフォルトの名無しさん (ワッチョイ 6719-vSov)2017/01/15(日) 21:32:21.51ID:qtyi6+tl0
ハッカーとか危険な男は使う人のことを考えた安心安全なコードを書かないと思うな
C言語はハッカーが使う言語だからね
0505デフォルトの名無しさん (ワッチョイ 677b-dqLr)2017/01/15(日) 21:37:56.33ID:OwCHVx6x0
>>504
Linuxがそんな考えで実装されてたら誰も使ってねえよ
0506デフォルトの名無しさん (ワッチョイ 6719-vSov)2017/01/15(日) 21:45:37.60ID:qtyi6+tl0
使う人がプログラムを選ぶのではなくプログラムが使う人を選ぶ
それがハッカーの書くプログラムだ
0507デフォルトの名無しさん (ワッチョイ 4f42-q48i)2017/01/15(日) 21:49:39.20ID:YV5ExKYS0
C言語使えるだけではハッカーとは言えないな
PHPでもSQLでもシェルスクリプトでも果ては画像ファイルも使うから
0508デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 21:55:03.08ID:HYjV15pa0
>>494
> じゃあ未定義動作の方が大事っていうケース挙げてみてよ
strlen() に nul 終端してないデータを与えたら未定義動作になるから使用禁止な
今のインターフェースを変えることより未定義動作になることが重要と言うならやれば?

> 古い人間ならパイプぐらい知ってるよね?
パイプを使うプログラムに使うのが間違いと言うだけだろ
0509デフォルトの名無しさん (ワッチョイ df4a-oWec)2017/01/15(日) 21:56:51.93ID:BJa8Ru6k0
getsの何が問題なのか30文字以内で頼む
0510デフォルトの名無しさん (ワッチョイ 6719-vSov)2017/01/15(日) 21:57:21.51ID:qtyi6+tl0
プロの使う道具に安全装置は不必要
つまりはそいうことだ
0511デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/15(日) 21:57:44.02ID:HYjV15pa0
>>495
使用通り使えば正しい結果を出すのに正しくないという理由は?
より良い = 正しい
ではないことぐらいは理解してるよね?
0512デフォルトの名無しさん (ブーイモ MM8b-esp+)2017/01/15(日) 21:58:12.43ID:HXiVsc1JM
初心者に対して無責任にCをすすめる輩さえ居なけりゃ
後は自己責任で何でも良いや
0513デフォルトの名無しさん (ワッチョイ 4f6f-Ncwg)2017/01/15(日) 23:04:34.22ID:tpaH0xF80
初期のC言語入門書では getsやscanfが普通に使われていたので、
それを受けて、初心者向けのQAなどで、getsを使うと余計なトラブルに合う、
gets は使うべきでない、という言い方がよくされてた。

どうもそれぐらいの頃にC言語を入門した人は、刷り込まれて、getsに対する
嫌悪感が強い気がするね
0514片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK8b-YaJ8)2017/01/15(日) 23:08:25.71ID:DPFQ7IqoK
gets_sの話はしないのか?
0515デフォルトの名無しさん (ワッチョイ 3217-q48i)2017/01/15(日) 23:17:54.27ID:+Zy353bS0
C言語が危険とか言ってる奴は初心者
0516デフォルトの名無しさん (ワッチョイ 329f-3X21)2017/01/15(日) 23:24:38.70ID:Q6BJ1v/20
誰も教えてくれなかったgetsの安全な使い方

⑴ 入力データはヒープに格納しましょう
 スタックではオーバーフロー検出が困難になるので避けましょう
⑵ ヒープのメモリ管理はmallocにお任せではなく自前で行いましょう
 OS(フリースタンディングの場合はCPU)の機能をよく確認して
 適切なサイズで領域を確保しましょう
⑶ アクセスバイオレーションを必ずトラップしましょう
 確保済領域を越えたアクセスが行われた場合に必ず検出しましょう
 領域を伸長して確保するなりエラー終了するなり適切に対処しましょう
0517デフォルトの名無しさん (ワッチョイ 4f42-q48i)2017/01/15(日) 23:30:53.36ID:YV5ExKYS0
よく切れる刃物は気をつけて使おう、くらいか
0518デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/15(日) 23:38:57.60ID:T6BZe6fz0
全然切れ味良くないから的はずれ
0519デフォルトの名無しさん (ワッチョイ 3217-q48i)2017/01/15(日) 23:52:02.38ID:+Zy353bS0
まぁ今の時代確かにユーザーレイヤのアプリの開発に使うような言語ではなくなったよな
高速なライブラリの開発に使うか
カーネルレイヤのドライバやハードウェアコントローラの開発に使うか
ノンOSプラットフォームの開発で使うか

WindowsでVS使うような提供されたAPIだけ叩いてりゃいいような
プログラマとはいい難いせいぜいよくてスクリプタ低度の奴が
扱える代物ではないよね
0520デフォルトの名無しさん (ワッチョイ b67b-ZK7w)2017/01/16(月) 00:38:37.29ID:lrVKlg3e0
getsじゃないとできないことってあるの?
0521デフォルトの名無しさん (ドコグロ MM4e-lGK7)2017/01/16(月) 06:54:48.94ID:6pMMhvrLM
使うべきではない
と
使えない
の区別のつかない子が暴れてただけでしょ
要するにいきなり gets() が使えないって言い出した >>445 がもっとも使えないって言うオチ w

あと下らんスレたてた ID:T6BZe6fz はちゃんと後始末しとけよ
0522デフォルトの名無しさん (ワッチョイ 7e13-dHfL)2017/01/16(月) 07:43:01.47ID:wa9Hwxuh0
>>516
gets() で (3)アクセスバイオレーションをトラップするにはどうすればいいの?
0523デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/16(月) 08:47:50.34ID:4D4bT+Tb0
発狂中のジジイが1匹に、言い過ぎと反発してるのが1匹か

getsの「正しい使い方」はネタしか出てないぞ
0524デフォルトの名無しさん (ドコグロ MM4e-lGK7)2017/01/16(月) 12:45:55.67ID:6pMMhvrLM
>>523
>>511 に回答してからほざこうね、ぼくちゃん w
0525デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/16(月) 13:23:00.03ID:4D4bT+Tb0
「このプログラムに80文字を超える行を入力してはいけません。入力した場合の動作は不明です。」って「使用」か ? w
0526デフォルトの名無しさん (ワッチョイ db2c-dHfL)2017/01/16(月) 13:25:06.29ID:5bpc7cMa0
しようもない話はこの辺で終わりにしよう
0527デフォルトの名無しさん (ワッチョイ 1f7b-lDPz)2017/01/16(月) 14:13:58.14ID:pfhmv7nO0
>>525
ドキュメントに制約事項として書いておけば仕様ですね
0528デフォルトの名無しさん (フリッテル MMce-xA2o)2017/01/16(月) 17:22:38.13ID:jKqhoN+GM
C言語の仕様読まれたし
0529デフォルトの名無しさん (ドコグロ MM4e-lGK7)2017/01/16(月) 18:47:01.00ID:6pMMhvrLM
>>525
誤字にしか突っ込めないとかかわいそうな奴 w
0530デフォルトの名無しさん (ワッチョイ 1f85-y9rD)2017/01/16(月) 19:02:29.34ID:LsnAvwpU0
似た名前でも gets() と fgets() とは雲泥の違い、どうしてこうなった?
0531デフォルトの名無しさん (ワッチョイ 3217-q48i)2017/01/16(月) 19:46:22.11ID:AUBfY0al0
ここまでダンディ坂野への言及が一切ないのは少々予想外。
0532デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/16(月) 19:58:01.48ID:4D4bT+Tb0
>>529
>誤字にしか突っ込めないとかかわいそうな奴 w
つまり本気で

> 「このプログラムに80文字を超える行を入力してはいけません。入力した場合の動作は不明です。」

こう考えてるって事だな ぷぷぷ
0533デフォルトの名無しさん (ドコグロ MM4e-lGK7)2017/01/16(月) 20:23:22.16ID:6pMMhvrLM
>>532
で?
>>511 にはなにも言えないってことでいいのかな? w
0534デフォルトの名無しさん (ワッチョイ 92c0-oWec)2017/01/16(月) 21:49:54.99ID:YbHVSczU0
>>531
ダンディはいなくてもいい存在だから
0535デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/16(月) 22:14:50.18ID:4D4bT+Tb0
>>533
可哀想なくらいに頭悪いな >>532がそれだよ
「使用通り使う」とやらはネタでしか無い
0536デフォルトの名無しさん (ワッチョイ b23c-lGK7)2017/01/16(月) 23:22:23.48ID:Afs2A6pw0
低能ループ頂きました w
0537デフォルトの名無しさん (ワッチョイ c3dc-0v0L)2017/01/17(火) 05:56:42.40ID:snMaBsBG0
>>531
>>460 はソレだと思ったんだけど。
0538デフォルトの名無しさん (ワッチョイ 67e3-UjPM)2017/01/17(火) 19:16:21.10ID:3xEzL0NM0
チキンナ…
0539デフォルトの名無しさん (JP 0Hf2-dHfL)2017/01/18(水) 10:50:37.16ID:I4y9jt7uH
超初心者です
int main(void){

int i;

int d[255];
for(i = 0;i < 5;i++){

scanf("%d", d[i]);

}

for(i = 0;i < 5;i++){

printf("%d", (d[i] + 1)- d[i]);

}

これどこが間違ってるの?
0540デフォルトの名無しさん (ワッチョイ 4f19-YL17)2017/01/18(水) 11:08:01.51ID:p9TLQNPi0
質問の仕方が間違ってるかと。


とりあえず return が無いからエラーでるな。
0541デフォルトの名無しさん (ドコグロ MMe3-S8Zq)2017/01/18(水) 11:12:01.96ID:5+QtbuoXM
>>539
何をやってどうなって欲しいのがどうなったかくらい書こうよ
0542デフォルトの名無しさん (ワッチョイ 4f42-q48i)2017/01/18(水) 11:15:22.05ID:NzS4tvDO0
scanf("%d", &d[i]);
0543デフォルトの名無しさん (JP 0Hf2-dHfL)2017/01/18(水) 13:20:22.60ID:VNRYcAN1H
何がいけないの?
0544デフォルトの名無しさん (ワッチョイ 1f7b-lDPz)2017/01/18(水) 14:57:19.16ID:AiIDzBtL0
セグメンテーションフォールト
0545デフォルトの名無しさん (フリッテル MMce-xA2o)2017/01/18(水) 14:58:24.13ID:pHJgjtGxM
>>539
scanfの第二引数がポインタじゃなく値を渡してるのがいけない
0546デフォルトの名無しさん (ワッチョイ c3dc-0v0L)2017/01/18(水) 15:24:14.06ID:kHLvx3oS0
>>539 本当に初心者かなぁ。

main() の関数終了の閉じ波カッコがないという引っ掛け問題じゃないのか。
0547デフォルトの名無しさん (ワンミングク MMe2-IBT7)2017/01/18(水) 15:28:19.11ID:w2Ge5miGM
なんとなく
d[i]+1 は
d[i+1]な気がする
もちろんどっちでもエラーにはならないない
0548デフォルトの名無しさん (ワッチョイ 1f7b-cG99)2017/01/18(水) 16:31:10.29ID:y5PvnF5k0
>>540
>とりあえず return が無いからエラーでるな。
初心者は解答しないように
0549デフォルトの名無しさん (ワントンキン MMe2-STcG)2017/01/18(水) 20:11:44.79ID:S41kFDpWM
戻り値必要だよな。
0550デフォルトの名無しさん (ワッチョイ b20b-0Plu)2017/01/18(水) 20:39:43.31ID:24H6FiaC0
mainに戻り値は必要じゃないです
書かなければ0を返すと保証されてます
0551デフォルトの名無しさん (ワッチョイ 2f3c-dHfL)2017/01/18(水) 20:45:09.76ID:sCxzsbAt0
C++ じゃなく C でもそうだっけ?
0552デフォルトの名無しさん (ワンミングク MMe2-SqzF)2017/01/18(水) 21:01:22.21ID:0GSOJvhdM
>>551
c99からは
0553デフォルトの名無しさん (ワッチョイ 2f3c-dHfL)2017/01/18(水) 21:06:51.34ID:sCxzsbAt0
>>552
ありがとう
C++環境でCコーディングしてるだけのケースが多々あって
実はそれC++だけ に嵌ってるかと思って
0554デフォルトの名無しさん (ワッチョイ 12cb-q48i)2017/01/18(水) 22:01:46.51ID:goP4qmTy0
「俺の知ってるバージョンがそういう仕様だからそれが常識だ!!」
0555デフォルトの名無しさん (ワッチョイ 4f42-q48i)2017/01/18(水) 22:08:07.50ID:NzS4tvDO0
値を返さないmainってなんだか気持ちが悪い

年寄りだから許して
0556デフォルトの名無しさん (ワッチョイ 3217-q48i)2017/01/18(水) 22:38:02.75ID:ekivbMLx0
>>542>>545が正解
0557デフォルトの名無しさん (ワッチョイ f37b-aKms)2017/01/18(水) 23:16:18.54ID:YJRB0oa00
省略可能なものは省略しない
それが俺のジャスティス
0558デフォルトの名無しさん (ブーイモ MM8b-ws9s)2017/01/18(水) 23:34:18.09ID:qZpBfO5GM
longとか省略せずに、auto signed long intと書いてるか?
0559デフォルトの名無しさん (ワッチョイ cfba-Taza)2017/01/19(木) 00:00:05.15ID:NeX58ZmE0
値返すよって最初に言っといて返さないのは詐欺だから許せない!main()であっても

暗黙の動作が規定されるほど縛りが多くなってCで書く旨味が減ってくると思うんだけどな
あと可変引数とか割とアクロバットな関数を最初に習うのは嫌がらせだと思う
stdioはゲッツとかも失敗して学べ的な修行のためにあるんだろうか、std*から外しても良いくらいだと思う
main()の戻り値保証するより標準関数を整備しないのか、まあ今更の言語だけども…
以上愚痴でした
0560デフォルトの名無しさん (ワッチョイ 737b-EU0b)2017/01/19(木) 00:30:32.41ID:k8vd3mrR0
>>558
ネタだと思ってるんだろうけど真面目な話で「紛れの無い書き方」を意識してる
型なんてどうせtypedefの一行でしか書かないし手間でも何でもないから全て明示する
あーそれとautoは別の用途で使われだしたから書いちゃダメよ
0561デフォルトの名無しさん (ブーイモ MM27-xQI9)2017/01/19(木) 01:31:07.51ID:LPaFmeuyM
>>560
c++じゃなくて?
0562デフォルトの名無しさん (アウアウカー Sac7-DPdO)2017/01/19(木) 08:41:12.63ID:NZqa4lWfa
autoを書く是非はどうでもいいけど、別用途なんて初めて聞いたわ
c++で書く似非cならあるんだろうけど
0563デフォルトの名無しさん (フリッテル MMff-p+z4)2017/01/19(木) 12:48:24.75ID:DrepgePAM
省略できるものは省略しない
暗黙的に使えるものでも明示的に使う
ってCだと定石かと
不慮の事故を防ぐ
定数型は今時stdint.hで定義済みのものしか危険で使わないし
0564デフォルトの名無しさん (JP 0Hc7-xQI9)2017/01/19(木) 13:11:03.60ID:XHrL8OB2H
教条的に盲従するやつがいるから、原則とかスタイルとかにとどめとけ
0565デフォルトの名無しさん (ワッチョイ 03e3-JCkM)2017/01/19(木) 20:42:15.98ID:7H+jgSV10
goto不要論もだな
0566デフォルトの名無しさん (ワッチョイ ff17-SmTw)2017/01/19(木) 22:05:39.71ID:sNNglGQF0
gotoは使い方次第でとてもコードをスッキリ書けるので条件付きで使っても可
・関数内に閉じている事
・上から下への一方行である事
0567デフォルトの名無しさん (ワッチョイ 037b-rTuY)2017/01/19(木) 22:31:28.78ID:bO+XZlhy0
goto C言語なら要るよね。
0568デフォルトの名無しさん (ワッチョイ cf7b-PnnS)2017/01/20(金) 01:15:25.05ID:/ixeQkYS0
Linuxでは、gotoを使って、関数の最後に、エラー処理をまとめて書く
0569デフォルトの名無しさん (ワッチョイ 634a-jjzP)2017/01/20(金) 01:27:35.42ID:1c/0Zcpc0
>>566
関数内で閉じないgotoってあるの?
0570デフォルトの名無しさん (ワッチョイ ff5b-516J)2017/01/20(金) 03:04:22.97ID:xcR109kr0
goto 使うプロなんか居ねえよ
0571デフォルトの名無しさん (JP 0H27-Up5i)2017/01/20(金) 08:39:58.62ID:Nvso2zBqH
gotoで出る変数初期化漏れのバグとか見たら使いたくなくなるわ
0572デフォルトの名無しさん (ワッチョイ cf4f-3qL8)2017/01/20(金) 08:47:09.81ID:qkw/qgqA0
初期値の代入ではなく?
初期化が漏れるって宣言を飛ばすことになると思うんだけども
0573デフォルトの名無しさん (ドコグロ MM47-nqcr)2017/01/20(金) 10:01:48.58ID:k1jTWx+qM
gotoは使い方によっては読みやすくなるけどなぁ
規約で禁止されちゃってること多いけど
0574デフォルトの名無しさん (ワンミングク MM9f-BwFa)2017/01/20(金) 12:43:30.09ID:BB/TuuEfM
gotoは生理的に受け付けないわ
0575デフォルトの名無しさん (ワッチョイ 237b-rTuY)2017/01/20(金) 12:45:09.26ID:B3YDppGR0
https://youtu.be/quIHgwuF6r4
0576デフォルトの名無しさん (アウアウカー Sac7-DPdO)2017/01/20(金) 12:54:36.75ID:8UbAIdNoa
>>572
VLA以外は宣言飛ばしても問題ないはず
初期化していないから、不定値なだけ
0577デフォルトの名無しさん (ササクッテロル Sp87-5ScM)2017/01/20(金) 23:17:46.34ID:axiV8iWTp
>>570
沢山いるよ
0578デフォルトの名無しさん (ワッチョイ 737b-EU0b)2017/01/20(金) 23:33:36.80ID:Cg6WMpCY0
goto必須な言語のgotoとは別物だから
もっと便利なフロー制御構造がある中でのgotoだし実は使いどころは少ない
だからこそ効果的なところで>>566のように問題のない使い方で便利に使えばいい
ハナから拒否る必要も特別視する必要もない
0579デフォルトの名無しさん (ワッチョイ cf7b-rTuY)2017/01/20(金) 23:41:09.42ID:esT1VQmf0
Cよりgotoが必要な言語なんて無くね?
0580デフォルトの名無しさん (ワッチョイ 2342-SmTw)2017/01/20(金) 23:53:52.00ID:95+4MF/b0
べーしっくん
0581デフォルトの名無しさん (ワッチョイ 0f48-BwFa)2017/01/21(土) 00:18:42.31ID:ceXo2OiN0
すぽぽぽーん!
0582デフォルトの名無しさん (ワッチョイ 6378-AVdH)2017/01/21(土) 00:46:42.08ID:DSUhNQfN0
CとC++の関係について質問です。
C++はCを改良したものだそうですが、
古い方のCを使うメリットはもうないのでしょうか?
それとも別物なのでしょうか?
0583デフォルトの名無しさん (ワッチョイ 83a1-5ScM)2017/01/21(土) 01:24:11.75ID:pcFLx4Ty0
別物というか別分野というか
優劣を競うものでは無いのは確か
0584デフォルトの名無しさん (ワッチョイ cf7b-5ScM)2017/01/21(土) 01:51:39.38ID:RmTA4cQd0
C++は古いバージョンのCのフォーク
時々新しいCにリベースしてる
0585デフォルトの名無しさん (ワッチョイ 033b-uAub)2017/01/21(土) 09:50:14.25ID:B+4iZq8B0
CとC#の関係について質問です。
C#はCを改良したものだそうですが(ry
0586デフォルトの名無しさん (ワッチョイ 6302-lIVJ)2017/01/21(土) 11:28:38.80ID:xB1N0Svq0
C言語覚えればリアルなパイオツはつくれますか?
乳見たくてしゃあない
0587デフォルトの名無しさん (ワッチョイ 235b-nqcr)2017/01/21(土) 11:40:41.10ID:JVJ51h9+0
>>586
おっぱぶでも行ってこい
0588デフォルトの名無しさん (ワンミングク MM9f-cBXx)2017/01/21(土) 14:21:31.78ID:E3hCYHfIM
FEMは理解しているの?
0589デフォルトの名無しさん (JP 0H27-Up5i)2017/01/21(土) 16:14:05.71ID:0yByJcs8H
>>582
C++はCの建て増しだから
使えるなら使ったほうが便利だし、無いならCの不自由さを我慢して使うだけ

Cの方が小さくて身軽な分、狭いところへも潜っていけるという強みならある
0590デフォルトの名無しさん (ワッチョイ ff17-SmTw)2017/01/22(日) 15:18:21.26ID:Yl4nAGke0
C++は高水準言語
Cは中水準言語(昔はCも高水準言語と呼ばれてた)

Cはコンパイル後のアセンブラをそれなりに意識した組み方ができるところが最大の魅力
0591デフォルトの名無しさん (ワッチョイ 6f13-3qL8)2017/01/22(日) 16:16:28.06ID:2ikRDhsq0
>>588
教科書高いhttps://www.amazon.co.jp/dp/4627526202/
0592デフォルトの名無しさん (ワッチョイ cf33-AyJn)2017/01/22(日) 16:20:10.62ID:3ymhMJps0
言語視点から言えばCはC++の基底部分。
機能視点なら、CはC++のサブセット。
Cを文法のベースにしている言語は、C++以外にも多いと思う。(perl、java、js、C#、obj-C、etc.)
Cだけしか使えない環境って、もうあまり無いと思うけど、いろいろな理由から仕事上の約束として、「Cに限る」としている場合は結構あるかな。
例えば、組み込みの基礎部分にはC一択。プログラム時もリンク時も、メモリアドレスをハンドリングしやすいから。

結論:
Cが即戦力として必要になるかはケースバイケースだが、個人の技能を高めるための知識としては、知っておいて損は無いと思う。

但し:
Cだけを勉強するという方法を取らなくとも、上記言語を複数使っているうちに、結果的にある程度C部分が身につく気はする。
0593デフォルトの名無しさん (ワッチョイ 6f13-3qL8)2017/01/22(日) 16:27:58.13ID:2ikRDhsq0
>>592
>perl、java、js、C#、obj-C、etc.
obj-C 以外には「ポインタ」という考え方がない
0594デフォルトの名無しさん (ドコグロ MM07-uAub)2017/01/22(日) 21:35:27.52ID:VMIoxFghM
>>593
perl だとリファレンスだけど同じものだよ。
0595デフォルトの名無しさん (ワッチョイ ff17-SmTw)2017/01/22(日) 22:16:15.32ID:qcD1gAA30
perlはアドレスに対する加減算の自由なアクセスができないからポインタとは言えないんじゃないかな。
0596デフォルトの名無しさん (ワッチョイ ff5b-516J)2017/01/22(日) 22:27:28.47ID:UAB908k/0
javaみたいなオブジェクト指向は、ポインタを元にして発展しただけだろう。
アクセス自体がポインタ参照みたいなもんだろう。
0597デフォルトの名無しさん (アウアウカー Sac7-DPdO)2017/01/22(日) 22:57:31.71ID:+baTcR6ha
c#はポインタあるな
0598デフォルトの名無しさん (ワッチョイ c33c-lIVJ)2017/01/22(日) 23:52:11.94ID:Zj18/PLE0
AndroidアプリってC言語でも作れるんですね
今独学で基礎から勉強中なので頑張ります
0599デフォルトの名無しさん (ワッチョイ 83a1-5ScM)2017/01/23(月) 00:38:51.57ID:ayLfxszv0
是非頑張って下さい
0600デフォルトの名無しさん (ドコグロ MM7f-j6UX)2017/01/23(月) 08:20:50.15ID:mc6Hyr1KM
またオレオレ定義のポインタで言い争うのか?
0601デフォルトの名無しさん (ワッチョイ ff17-SmTw)2017/01/23(月) 09:04:57.06ID:Zl63m0Rj0
https://twitter.com/hiromu1996/status/822832230007390208
 法人番号を数値で保持していて、印字するときにミスったのであろうと思われる、心あたたまるバグの例です
 https://pbs.twimg.com/media/C2tJinLUAAI3_IG.jpg
0602デフォルトの名無しさん (ドコグロ MM7f-j6UX)2017/01/23(月) 12:55:51.68ID:mc6Hyr1KM
C言語になんの関係が...
0603デフォルトの名無しさん (フリッテル MMff-p+z4)2017/01/23(月) 14:10:03.40ID:B8NHXXX/M
試験が甘すぎる
全然心温まる話しちゃうわ
0604デフォルトの名無しさん (JP 0H1f-3qL8)2017/01/23(月) 14:26:42.16ID:jBIQNKZQH
char n[7];

char i;

int cnt = 0;
for(i = 0;i < 7;i++){
scanf("%s", n[i]);
if(strcmp("no" == n[i]))
cnt++;
}

printf("%d", cnt);
ド素人です
strcmpの使い方がわかりません
どこがいけないの?
0605デフォルトの名無しさん (ワッチョイ 8fd4-4Kfo)2017/01/23(月) 14:36:38.76ID:y6xecmuF0
  |
  |
  |
  J
0606デフォルトの名無しさん (ドコグロ MMff-nqcr)2017/01/23(月) 14:43:41.90ID:AYi5lVylM
>>604
利用例はググれば出てくるんで
それ見てからどうぞ
0607デフォルトの名無しさん (ワッチョイ ff5b-516J)2017/01/23(月) 15:47:52.76ID:V1f/l7L40
配列操作はポインタ派か添え字派で分かれるな。


俺はポインタ派だ!
0608デフォルトの名無しさん (フリッテル MMff-p+z4)2017/01/23(月) 16:39:16.01ID:uQGAPPOFM
✕: char n[7];
○: char n[7][256];

✕: strcmp(
0609デフォルトの名無しさん (アウアウカー Sac7-Taza)2017/01/23(月) 16:39:48.36ID:ICmFMePta
動的配列でもアクセスは添え字だよなあ
0610デフォルトの名無しさん (フリッテル MMff-p+z4)2017/01/23(月) 16:40:45.79ID:uQGAPPOFM
✕: char n[7];
○: char n[7][256];

✕: strcmp("no" == n[i])
○: strcmp("no", n[i])
0611デフォルトの名無しさん (ワッチョイ b3dc-AO4H)2017/01/23(月) 17:24:28.37ID:zKyJpw850
>>610 strcmp の返す値のブール解釈が逆にならんか?
一致すれば0、不一致なら非0、俺も毎度引っかかるのだけど。
0612デフォルトの名無しさん (ワッチョイ cf4f-3qL8)2017/01/23(月) 17:34:59.43ID:TVEb5yq70
一致・不一致の2状態ではなく
辞書順における大小を符号つけての3状態を取り扱ってるから、そうなっちゃうん
0613デフォルトの名無しさん (スッップ Sd1f-Lt7C)2017/01/23(月) 17:55:33.16ID:NnVUMG+Yd
コンソール上で動くプログラムを作ってるのですが
scanf等で文字入力をしてもらう時に
コンソール上にエコーバックさせないようにしたいです

開発環境はMacBookですが色々調べてると
ioctlでそれが実現できるようで、、、
ただサンプルプログラム見ながらやってるのですが
termios.h
のincludeでそんなヘッダーファイルなどないと怒られてしまいます

やむなく自分でtermios構造体を実装して
ECHOなどの定数も自分で定義してやってみたのですが
エラーは出ないもののエコーバックはされてしまいます

なのでどうにかして正規の方法で実現したいのですが
temios.hはどうやって読み込むのでしょうか?
0614デフォルトの名無しさん (ドコグロ MM7f-j6UX)2017/01/23(月) 18:47:39.93ID:mc6Hyr1KM
>>604
開発環境がわからんけどとりあえず警告レベルは最大にしとけ
0615片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK47-o4cX)2017/01/23(月) 19:00:19.91ID:ydV3yb7gK
>>613
ncurses使っとけ
0616デフォルトの名無しさん (スッップ Sd1f-Lt7C)2017/01/23(月) 19:28:59.30ID:NnVUMG+Yd
>>615
ありがとうございます
そういうものがあるというのを知れたのは収穫ですが
出来るはずのことが出来ていないこの状況のまま放置して
別の方法を試すのはよくないと思うので
引き続きioctlでやる方法を知りたいです
0617デフォルトの名無しさん (ワッチョイ 2342-SmTw)2017/01/23(月) 20:07:28.53ID:IjK09lgG0
>>616
Xcodeはインストールされているんだよね?
terminal 起動して、/usrの下にincludeディレクトリはある?
無い時は、Command Line Tools for Xcode をインストールすればいいよ
Appleのサイトからダウンロードできるから
0618デフォルトの名無しさん (JP 0H1f-3qL8)2017/01/24(火) 14:25:51.06ID:s5yedK4vH
char s[32], t[32];
scanf("%s", s);

scanf("%s", t);

if(strcmp(s, t) == 0)
puts("Yes");
else
puts("No");
return 0;
これ、何処が間違いですか?
0619デフォルトの名無しさん (ワッチョイ cf4f-3qL8)2017/01/24(火) 14:29:35.98ID:HgJt/pLf0
また、どこが間違ってる君か
0620デフォルトの名無しさん (ワッチョイ 6f13-3qL8)2017/01/24(火) 16:22:57.86ID:KbL3L2m80
>>618
s や t に 32バイト分よりも多く入力されたらどうなるの?
0621デフォルトの名無しさん (ワッチョイ 637b-jh1Y)2017/01/24(火) 16:41:37.13ID:trMEtGhx0
平行宇宙の扉が開きます
0622デフォルトの名無しさん (JP 0H27-Up5i)2017/01/24(火) 17:16:17.43ID:tjYeiy24H
みんな大好き任意コード実行の世界へようこそ
0623デフォルトの名無しさん (JP 0Hc7-xQI9)2017/01/24(火) 17:38:04.91ID:kW6JMx9eH
オーソドックスに鼻から悪魔でいいじゃん
0624デフォルトの名無しさん (ワッチョイ ff17-SmTw)2017/01/24(火) 23:14:40.13ID:9a2CfgHX0
>>618
間違ってないよ
普通にコンパイル通るし
普通に入力、比較、表示される
0625デフォルトの名無しさん (ワッチョイ b3dc-AO4H)2017/01/25(水) 06:20:28.53ID:e9Bh0UQ80
「鼻から悪魔」だとプログラマ同士でのうっかりミスの指摘、
別環境に移植する時かコンパイラのバージョンアップ時にでも
こっそり直しとけばいいかなって感じだけど、

「任意コード実行」と言われるとセキュリティ上の重大な弱点、
今すぐ修正版を配布しなくちゃ、という気がするな。
0626デフォルトの名無しさん (ワッチョイ 637b-voKO)2017/01/25(水) 08:00:21.54ID:m0OoWaNd0
「このプログラムに31文字を超える文字列を与えてはいけません。与えた場合の動作は不明です」とかいとけば「使用」通り
0627デフォルトの名無しさん (ドコグロ MMff-nqcr)2017/01/25(水) 08:03:00.58ID:o3R3B2w3M
>>626
そこで漢字間違えるなよ
0628デフォルトの名無しさん (ドコグロ MMff-j6UX)2017/01/25(水) 08:21:18.18ID:fntd/u0oM
>>626=>>525
なんだろ
よっぽど悔しかったんだろうな w
0629デフォルトの名無しさん (ワッチョイ 037b-rTuY)2017/01/25(水) 08:23:40.51ID:5KwEWhG70
このプログラムはプロしか実行してはいけません
ってのも書いとかないとな。
0630デフォルトの名無しさん (ワッチョイ 637b-voKO)2017/01/25(水) 08:37:14.92ID:m0OoWaNd0
>>628
「使用書」書けるようになったか?w
0631デフォルトの名無しさん (ドコグロ MMff-j6UX)2017/01/25(水) 12:43:42.15ID:fntd/u0oM
本人か?
そこまで粘着するとは思わなかったが w
0632デフォルトの名無しさん (エーイモ SE1f-Fg9w)2017/01/25(水) 16:05:19.22ID:3mED4RljE
clangなんですけど
linuxとwindowsとmacで動かすものを作る場合
stdio.hとか標準ヘッダーだけを使っておけば固有の書き方しなくても問題ないですか?
0633デフォルトの名無しさん (ガックシ 067f-J7L1)2017/01/25(水) 16:48:33.61ID:2OzyrQrs6
linuxを使っています。

時間を精密に測ろうとclock()を使ってみました。
エンターキーを押したタイミングを保存するために

clock_t c1, c2, trigger;
int i;

c1 = clock();

getchar();
trigger = clock();

for(i = 0; i < 1e+9; i++);
c2 = clock();

printf(
0634デフォルトの名無しさん (ガックシ 067f-J7L1)2017/01/25(水) 16:51:47.16ID:2OzyrQrs6
切れてますね。。。
続きです

printf("%f\n%f\n", (double)(trigger - c1)/CLOCKS_PER_SEC, (double)(c2 - c1)/CLOCKS_PER_SEC);

で、出力は
0.000038
2.210428
でした。getchar()の間はclock()が止まってしまうようです
conio.hが使えないためkbhit()は使えません。
何か方法は無いでしょうか?
0635デフォルトの名無しさん (ワッチョイ 7ffa-0CED)2017/01/25(水) 16:58:44.59ID:n0VSo+RY0
そういうことをしたいならノンブロッキングモードにしなきゃだめじゃないかな。
あるいはエンターキーじゃなくて ^C を使うとか。
0636デフォルトの名無しさん (ワッチョイ 7f6c-3qL8)2017/01/25(水) 17:03:14.67ID:nzinNv500
精密ってどれくらいにもよるけど、通常のlinuxでは
I/Oイベントの時刻を正確には拾えないんじゃないかな
0637デフォルトの名無しさん (ワッチョイ cf4f-3qL8)2017/01/25(水) 17:15:04.83ID:JtfgTFTK0
c1 と trigger の間ブロッキングしてても、ブロック中の時間経過分が
加味されて clock() が戻って欲しいってことかな

trigger - c1 が ゼロに近い値になってしまってて、明らかに待ってるってのに
ブロック中の時間経過は無しとして見えてるんじゃ使い難い と。
0638デフォルトの名無しさん (ガックシ 067f-J7L1)2017/01/25(水) 17:24:07.91ID:2OzyrQrs6
>>635
ノンブロッキングモードというのは初めて聞きました。
調べてみます。
ありがとうございます!

>>636
できればミリ秒単位で正確に知りたいのですが、おいおい考えていきます。

>>637
そういうことです
説明が分かりにくくてすみません。。。
0639デフォルトの名無しさん (ワンミングク MM9f-rTuY)2017/01/25(水) 18:00:14.73ID:1iFNjtVTM
clockはプログラムが使用したCPU時間を返す。
ユーザー入力待ち中はCPUは殆ど寝てるので変わらない
0640デフォルトの名無しさん (ドコグロ MM47-qMwn)2017/01/25(水) 18:03:13.28ID:ailJH66eM
エンターを待ちたいんだからノンブロッキングにしたらダメ。
そのレスはスルーすべき
0641デフォルトの名無しさん (ワッチョイ ff17-SmTw)2017/01/25(水) 22:20:09.57ID:G8iMNdQB0
>>633
gettimeofday()でどう?
0642635 (ワッチョイ 8afa-jt4/)2017/01/26(木) 06:14:45.36ID:2AOY7GkW0
ごめん、ちょっと勘違いした。こういうことかな。一応試してみた。

struct timeval tv[3];
int i;
gettimeofday( &tv[0],NULL);
getchar();
gettimeofday( &tv[1],NULL);
for(i = 0; i < 1e+9; i++);
gettimeofday( &tv[2],NULL);
for ( i = 0; i < 3; i++){ printf("%lu %09lu\n",tv[i].tv_sec,tv[i].tv_usec); }
0643デフォルトの名無しさん (ワッチョイ 1fdc-9HlY)2017/01/26(木) 07:58:36.22ID:5UtgO6zk0
gettimeofday() はもう古い、時代は clock_gettime()
とか man gettimeofday に出てるけど、どうなんだろ?

手元の環境だとどっちもデフォルトで使えるみたいだが。
0644デフォルトの名無しさん (ガックシ 06a6-Gp01)2017/01/26(木) 09:57:05.51ID:FKQz8ib86
>>641-643
ありがとうございます!
おかげでかけました。
0645デフォルトの名無しさん (JP 0H9f-k1qt)2017/01/26(木) 13:26:41.18ID:EVgQFY4KH
http://imgur.com/IPddjjy
写真で申し訳ありません。
うちの大学の先生が書いたC言語のソースコードなのですが、
その先生が参考にしたというC言語の入門書を読んでもさっぱり理解できませんでした。
有名な出版社の本に載っていたので、コードが間違ってるとも思えないですし、
どなたか分かりやすく解説していただけないでしょうか?
0646デフォルトの名無しさん (JP 0H7b-McLA)2017/01/26(木) 14:42:46.17ID:DgVQa7PhH
Cのコードとしては何もかも間違ってるね
何か別の概念をCっぽく書こうとしただけじゃないのか

その先生にこれは何をするものか聞いてみたら?
0647デフォルトの名無しさん (ワッチョイ 7e7b-316P)2017/01/26(木) 14:50:07.24ID:++maIYxb0
たぶん、誤植だろ

それは、滅茶苦茶な関係のないコード
0648デフォルトの名無しさん (ワッチョイ 7e7b-316P)2017/01/26(木) 14:54:53.57ID:++maIYxb0
ああ、間違い探しのクイズか

何か所、間違いがあるか、言ってみようというクイズ
0649デフォルトの名無しさん (JP 0H9f-k1qt)2017/01/26(木) 15:31:12.44ID:EVgQFY4KH
>>646
塩基配列(UCGA)を G=1 それ以外=0 と置き換えるプログラムらしいです
講義などでも特に何も言わずに出してるので、誤植があるとも思えません・・・
ちなみに言語はCで合っているそうです
0650デフォルトの名無しさん (ワッチョイ 7e4f-AZYz)2017/01/26(木) 16:01:52.64ID:J7ExVqTO0
変数名に - 含んでるから C言語じゃない 文法エラー
0651デフォルトの名無しさん (フリッテル MM76-Tu13)2017/01/26(木) 16:15:01.33ID:HMBMCFYQM
>>649
>ちなみに言語はCで合っているそうです
いやいや間違えてるから
++++なんて演算子無いし
整数型に浮動小数点数入れようとしてるし
0652デフォルトの名無しさん (JP 0H9f-k1qt)2017/01/26(木) 16:31:34.67ID:EVgQFY4KH
>>651
そうですよね、それは私も疑問に思ってました。
特殊な用法があるのかと解釈してましたが、違うみたいですね・・・

C言語でないとすれば、どのような言語がこのような書き方をするのでしょうか?
0653デフォルトの名無しさん (ブーイモ MMca-McLA)2017/01/26(木) 17:14:39.85ID:MclODevVM
誤植に決まってる
#includeしてる時点でC確定だ
でforの中身がreturnって、何もするつもりもないということ
先生も理解してないんだろこれ
講義の進行上どうしてもそのプログラムが必要なんだったら
中身を説明してくれと詰め寄るしかない
どうでもいいんなら先生のメンツを立ててそっとしておいてやれ
0654デフォルトの名無しさん (オッペケ Sr13-kdTZ)2017/01/26(木) 17:25:28.36ID:j2cjbmu2r
OSがマックでコンパイラはターミナルです。
ガイジ並みに初心者ですみませんが、
たとえばコマンドライン引数にPlus[Times[Sin[13.4],3],2]
って入力してそれを木構造にいれて計算するプログラム作りたいです。
例えば+-38-*876-みたいに一文字ずつ入れるやつならできるんですが、単語レベルで読み取って木構造に入れる方法がわかりません。
使う関数は決まっていて、
Plus[x,y]=x+y
Times[x,y]=x*y
Subtract[x,y]=x-y
Divide[x,y]=x/y
Sin[x]
Cos[x]
Exp[x]
Log[x]
Power[x,y]=xのy乗
って感じです。
誰か教えてくださいませんか。
0655デフォルトの名無しさん (ワッチョイ 7e4f-AZYz)2017/01/26(木) 17:39:52.79ID:J7ExVqTO0
一文字ずつ入れるやつのしくみを 一文字→連結したまとまり:単語 に拡張しておく
単語かどうかの切り出しは
 仮に1文字ピックアップして それまでの単語の続きかどうかを判断
 続きであれば連結して次の文字へ
 続きでなければ一旦その文字を返却し それまで連結したものが1かたまり確定

※ 再帰下降で規定できる形かは・・・ どうなんじゃろ?
0656デフォルトの名無しさん (ブーイモ MMca-McLA)2017/01/26(木) 17:48:27.81ID:MclODevVM
lexとyaccで一発(ってほど簡単じゃないけど)だろ
0657デフォルトの名無しさん (JP 0H9f-k1qt)2017/01/26(木) 18:28:12.78ID:EVgQFY4KH
>>653
本人は何度も確認した、誤植ではない、と言っていたので、
やはり先生が理解していない可能性が高そうです・・・。

詳しく質問するにしても、あまり良い噂を聞かない先生ですし、
因縁を付けられるのも恐いので、そっとしておこうと思います。
みなさん、ありがとうございました。
0658デフォルトの名無しさん (ドコグロ MMa6-8UQW)2017/01/26(木) 18:34:22.14ID:GoiJIG7TM
>>654
まずそれC言語でないとダメなのか?
文字列処理が多いからスクリプト言語とかそれでなくてもC++とかの方が余計なことに気を使わなくてすむぞ
0659デフォルトの名無しさん (エーイモ SE6a-EQ2H)2017/01/26(木) 18:45:23.58ID:Aov2hARvE
#include <stdio.h>

int main()
{
if (1) {
printf("%d", 1);
} else {
printf("%d", 0);
}

return 0;
}
これをclang -g hello.cしてgdb a.outしたあと
b 5
r
n
n
ってやると最後に
__libc_start_main (main=0x400510 <main>, argc=1, argv=0x7fffffffde28, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffde18) at libc-start.c:321
321 libc-start.c: そのようなファイルやディレクトリはありません.
って出るんですけどこれはどういうことですか?
0660デフォルトの名無しさん (ブーイモ MMca-McLA)2017/01/26(木) 18:50:32.16ID:MclODevVM
mainを抜けてライブラリ内のコードを実行してるけどソースがなくて表示できない状態
0661デフォルトの名無しさん (フリッテル MM76-Tu13)2017/01/26(木) 18:59:25.60ID:7ifRgzM2M
>>657
大学の研究室ってところは恐ろしいよな
教授は王様見たいなもんだからねぇ
下手に指摘して本当に目つけられたら卒業自体怪しくなる
本当怖い
0662デフォルトの名無しさん (ワッチョイ 2a9f-nHvD)2017/01/26(木) 19:19:14.41ID:aVTKdlq30
超絶マクロかもしれないのに断片だけ見せられても何とも言えないだろ
0663デフォルトの名無しさん (ワッチョイ aa5b-VFvX)2017/01/26(木) 19:48:38.69ID:hrRQQixV0
見た感じゲノム解析とかだろ?

普通のCコンパイラじゃ無いと思うよ。
0664659 (エーイモ SEd7-EQ2H)2017/01/26(木) 20:52:38.14ID:4GezNjHpE
>>661
これは問題ないんですね気にしないでおきます
0665659 (エーイモ SEd7-EQ2H)2017/01/26(木) 20:52:59.44ID:4GezNjHpE
アンカーミス
>>660
ありがとうございました
0666デフォルトの名無しさん (ワッチョイ 6b7b-1tcs)2017/01/27(金) 13:56:10.23ID:jIlJlrUs0
>>645
include "mirna-21.h"
でググルとそれらしきコードの断片が出てくるな
誤植じゃなさそう C言語風の何かだな
質問者は東大君か

誤植に決まってるキリッ
とかつられたアホウは反省するように
0667デフォルトの名無しさん (ワッチョイ 2a90-McLA)2017/01/27(金) 14:08:49.54ID:JO+Hx8dx0
名古屋市大だろ
0668デフォルトの名無しさん (ワッチョイ 0f4e-CdMM)2017/01/27(金) 14:13:27.35ID:7MaR5lKL0
不思議すぎるなw
0669645 (JP 0H07-qfIj)2017/02/02(木) 17:01:03.69ID:Vc1SILDSH
今更だとは思いますが、気になったのでソースコードの詳細を
その先生の研究室の院生さんに聞いてきました(直接質問するのは憚られるので)

そもそもプログラミング以前に、先生にはC言語の基本的な記述ルールや、
デバッグやコンパイルといった最低限必要な知識がほとんどないそうです。
(本人はC言語の本を一冊すべて暗記した、と言い張っているそうですが・・・)

そのため、あのソースコードは皆さんが指摘されたとおり、
全ての行が間違っている、インクを無駄に消費するだけの駄文(院生談)だそうです。

質問ですらないレスで申し訳ありません。ありがとうございました。
0670デフォルトの名無しさん (ワッチョイ cf4f-0MWP)2017/02/02(木) 17:24:39.17ID:Vgr2l0Ko0
>>669 乙
「インクを無駄に消費するだけの駄文」ってかっけーな
0671デフォルトの名無しさん (フリッテル MMff-pooc)2017/02/02(木) 18:03:07.85ID:pqQ57SepM
だろうね
少なくともCの構文とはかけ離れて過ぎ
コンパイル自体通らないよ
例え超絶マクロでもね
0672デフォルトの名無しさん (JP 0He7-CXHw)2017/02/02(木) 18:56:29.82ID:j/3vYI1GH
乙
たとえspringerから出版されようが教科書なんてそんなものだ

アメリカになら論文書くより教科書書くのを専門にしてる先生もいて、
改定を繰り返した名著もあるけどね
0673デフォルトの名無しさん (ワントンキン MM1f-zA2L)2017/02/02(木) 22:47:34.49ID:JFoRaqEvM
あるプロセスが情報を書き込んでそれを複数のプロセスが読み込む場合、書き込み場所は共有メモリがいいんでしょうか?それともファイルでしょうか?

その情報書き込みと読み込みは頻繁に行われるものではなく数週間にに1回で再起動後は無くなっても構いません。
0674デフォルトの名無しさん (ブーイモ MMc7-CXHw)2017/02/02(木) 23:32:36.51ID:Ch1RuY2tM
誰かが勝手にファイルを消したり書いたりする危険が全くないなら
どっちでも好きな方でいいよ
どちらにしてもちゃんとロックしろよ
でないと100年に一度レベルの誤動作が来月起きるかもしれんぞ
0675デフォルトの名無しさん (ワッチョイ 934e-2G09)2017/02/03(金) 03:31:26.02ID:GQ++c1010
>>669
ヴォイニッチ手稿もそんな感じだろうなと思った
0676デフォルトの名無しさん (ワッチョイ 037b-gmgt)2017/02/04(土) 23:04:25.98ID:NOwV5iNI0
Windows10でMinGWを入れ、環境変数のpathに参照先のディレクトリを入れているのに
コマンドプロンプトでgccが使えません。
なぜでしょうか?
参照先のフォルダにgcc.exeが存在していることは確認済みで、
C:\MinGW\bin\gccでやると使えます。
0677デフォルトの名無しさん (ワッチョイ cf7b-gPBI)2017/02/04(土) 23:14:44.21ID:ognvNw6b0
powershell_ise で、
$env:Path.split(";")

とすると、MinGWの行は、どう表示される?
0678デフォルトの名無しさん (ワッチョイ 037b-gmgt)2017/02/04(土) 23:25:22.10ID:NOwV5iNI0
C:\MinGW\bin\
と表示されます
0679デフォルトの名無しさん (ワッチョイ 937b-IpSN)2017/02/04(土) 23:35:22.43ID:EkYaUQh20
>>676
C:\MinGW\bin\gcc.exe --version
とフルパス実行してみて動くならpathの設定ミス
動かないならパッケージのミス(x32osなのにx64バイナリ入れたとか)
0680デフォルトの名無しさん (ワッチョイ 0f48-nOPp)2017/02/04(土) 23:37:20.61ID:xXpQSLfH0
;と:間違えてるとか微妙にパス名間違えてる
0681デフォルトの名無しさん (ワッチョイ 937b-IpSN)2017/02/04(土) 23:42:27.94ID:EkYaUQh20
あーごめんフルパス試してるやん
てことはpathの間違いだろう
echo %path%
の出力を張り付ければすぐにわかるよ
0682デフォルトの名無しさん (ワッチョイ 037b-gmgt)2017/02/04(土) 23:57:30.71ID:NOwV5iNI0
解決致しました。
パスは参照元のを張っていたので間違いはないと思うのですが。
環境変数に
C:\MinGW\bin
で設定していたのですが、
大文字のCではなく小文字のcで設定すると
パスが通る用になりました。
回答してくださった方ありがとうございます。
0683デフォルトの名無しさん (ワッチョイ 7f17-yene)2017/02/05(日) 00:18:30.63ID:rbq9sUhf0
Win10ならMinGWやCygwinじゃなくて
Bash on Ubuntu on Windowsがあるよ
0684デフォルトの名無しさん (ワッチョイ 43da-3F/E)2017/02/05(日) 05:19:00.64ID:dW6Jwq600
Win10でも32bitOSだと使えないとか…
0685デフォルトの名無しさん (JP 0H9f-0MWP)2017/02/05(日) 09:19:04.10ID:XPcm+oNTH
4 324
2 352
3 297
1 392
超初心者です
出席番号と、合計点を入力し
出席番号を1、2、3、4、って順番に並び替えたいんですけど
どうすればいい?
0686デフォルトの名無しさん (ワッチョイ 7f90-CXHw)2017/02/05(日) 09:38:46.80ID:oILHhlOU0
ソート
0687デフォルトの名無しさん (ワッチョイ a33b-NQew)2017/02/05(日) 09:56:21.45ID:WXUl8JUq0
Excel使えよ
0688デフォルトの名無しさん (ワッチョイ d3dc-0e9Z)2017/02/05(日) 10:50:45.88ID:gNgZtC6x0
出席番号と合計点をメンバーにもつ構造体を作って、
その構造体の配列にデータを格納。
構造体の出席番号部分で比較する関数を用意して
qsort() に配列と要素数とsizeof(構造体)と比較関数を渡す。

というのが標準的なやり方かと思うが、
上の説明の各行に初心者が越えなきゃいけないハードルがあるな。
0689デフォルトの名無しさん (ワッチョイ 7f7c-0MWP)2017/02/05(日) 15:54:34.59ID:Lh5FAZTD0
出席番号が小さいなら
int型の-1とかで初期化された配列作って埋めていけば良さそうだが...
0690デフォルトの名無しさん (ワッチョイ 7f5b-PzOe)2017/02/05(日) 16:12:21.34ID:do2rVInt0
テストの点数で比較してバブルソートすればよい
0691デフォルトの名無しさん (ワッチョイ cf42-yene)2017/02/05(日) 16:17:51.28ID:z02c26Xt0
主席番号に重複は無いと思うので、>>689のやり方を支持します
0692デフォルトの名無しさん (JP 0H9f-0MWP)2017/02/06(月) 11:14:28.30ID:bjG4OUXsH
int a;

int b[a];

こういう書き方できますか?
0693デフォルトの名無しさん (ワッチョイ cf42-yene)2017/02/06(月) 11:29:09.63ID:k/JawEEi0
書くことはいくらでもできるだろう
0694デフォルトの名無しさん (ワッチョイ d3dc-0e9Z)2017/02/06(月) 11:38:13.31ID:GvVdGH4O0
>>692
配列のサイズを実行時に決定したいってことならC99から可能らしい。
0695デフォルトの名無しさん (ワッチョイ 7f7c-yene)2017/02/06(月) 11:51:33.96ID:JXB1LvVi0
int a = 4;
int *b = ( int * ) malloc ( sizeof( int ) * a );
0696デフォルトの名無しさん (ワッチョイ cf4f-0MWP)2017/02/06(月) 12:02:07.90ID:Qt2MHonn0
スコープ抜けたら開放してくれるような malloc が欲しいと思ったことは何度かある
(alloca が標準関数だったら・・・)
0697デフォルトの名無しさん (ワントンキン MM1f-nOPp)2017/02/06(月) 12:30:56.36ID:yz/cpsC+M
>>685
全部自分で書くなら
一番小さい番号探して別の配列または構造体の配列に格納
これをなくなるまで繰り返す
0698デフォルトの名無しさん (ドコグロ MM67-ubpA)2017/02/06(月) 12:53:24.21ID:dJHmfPXIM
>>696
allocaも関数の終わりまで解放しないような
0699デフォルトの名無しさん (ワッチョイ cf4f-0MWP)2017/02/06(月) 13:02:54.62ID:Qt2MHonn0
>>698
関数から戻るときに開放だっけ? < alloca
それだと、スコープ抜けたらとは条件が違うか…

大筋それで用途には足るかもだけど
0700デフォルトの名無しさん (アウアウカー Sae7-6l7O)2017/02/06(月) 18:47:52.11ID:Seg8MMVDa
それこそ、VLAで良いじゃん
C11からはオプションになったけど
0701デフォルトの名無しさん (フリッテル MMff-pooc)2017/02/06(月) 19:26:22.74ID:vAgxY/wKM
メモリの確保と開放は2つで1つ一心同体
0702デフォルトの名無しさん (ワッチョイ 934e-OQSM)2017/02/06(月) 19:28:41.35ID:XMdY3knv0
なんかのヒーローものみたいだな
0703デフォルトの名無しさん (ドコグロ MMff-C4Pq)2017/02/06(月) 21:11:33.00ID:VJg+IRhiM
>>701
プログラム終了直前は free しなくてうんたらかんたら
0704デフォルトの名無しさん (ワッチョイ 7f17-yene)2017/02/07(火) 01:47:20.09ID:ldurXorh0
>>703
それはOSの機能でCとは関係なし
0705デフォルトの名無しさん (ワッチョイ a37b-0yxR)2017/02/07(火) 05:43:33.18ID:NKjx6bYj0
>>704
それを期待してatexitで登録された関数なども呼ばずに即時終了する_Exitも標準にあるから関係ないとまでは言えない
0706デフォルトの名無しさん (ワッチョイ 6f81-0MWP)2017/02/07(火) 06:52:42.31ID:Z7Y+uPLQ0
昨日会社でvoidポインタ使ったら怒られたよ。使っちゃダメなの?
0707デフォルトの名無しさん (ワッチョイ 137b-9MYa)2017/02/07(火) 07:08:38.53ID:GEzg1MU70
そりゃあ不適切な使い方をしたら怒られもするだろう
0708デフォルトの名無しさん (ワッチョイ 6f13-0MWP)2017/02/07(火) 07:14:47.25ID:+h4n1yps0
>>706
使い方による,貼ってみろ
0709デフォルトの名無しさん (ワッチョイ 037b-AtEE)2017/02/07(火) 07:58:13.35ID:JROyZiNP0
>>704
知ったかぶり ミトモない
0710デフォルトの名無しさん (JP 0Hc7-AGuT)2017/02/07(火) 09:42:56.01ID:IHNU1ydFH
>>703
セットにしては"いけない"例を出せ
0711デフォルトの名無しさん (ワッチョイ cf31-zFB8)2017/02/07(火) 10:58:16.15ID:A4fl6xaP0
guiを設置する所で積む

皆はどうしてるの?専用ソフトとか使ってる?
0712デフォルトの名無しさん (ワッチョイ 0399-AtEE)2017/02/07(火) 11:40:30.83ID:PGzD/t/t0
>>710
しなくても良い
してはいけない

区別が出来ないバカは死んだ方が良い
0713デフォルトの名無しさん (JP 0Hc7-AGuT)2017/02/07(火) 12:19:46.30ID:IHNU1ydFH
>>711
not stack, but stuck
0714デフォルトの名無しさん (ドコグロ MM7f-C4Pq)2017/02/07(火) 12:44:20.83ID:ff698yUfM
>>710
malloc and free netnews
辺りでググってから出直してこい
0715デフォルトの名無しさん (ワッチョイ 6f4d-qds7)2017/02/07(火) 20:26:54.41ID:TrR1IRB40
C言語学ぶ前にアセンブラを先に習得したほうがいい?
C言語のポインタでよくつまずくときくけど、アセンブラを先にやっとけばポインタでつまずくことないって、本当?
0716デフォルトの名無しさん (ワッチョイ 3342-wVGn)2017/02/07(火) 20:33:40.04ID:ZZufsVw20
そんなことはない
0717デフォルトの名無しさん (ワッチョイ c37b-pWqG)2017/02/07(火) 20:53:23.38ID:1VeBPI3R0
>>715
8085 のアセンブラから c に移行した者ですが
MOV A,M は
A = *M; なので
ポインターの概念には苦労しませんでしたね
0718デフォルトの名無しさん (ワンミングク MM1f-PSyA)2017/02/07(火) 20:59:44.97ID:cTLgA1N6M
LEA は&だなとか
0719デフォルトの名無しさん (ワッチョイ 037b-AtEE)2017/02/07(火) 21:07:47.54ID:JROyZiNP0
ポインタでつまずかなかったからわからんが、Cより先にアセンブリは習得していた

つまずいた経験があるらしい>>716の経験談が聞きたい
0720デフォルトの名無しさん (ワッチョイ b36c-0MWP)2017/02/07(火) 21:08:03.25ID:Q5k0Wut90
>>715
都市伝説レベル
0721デフォルトの名無しさん (アウアウカー Sae7-aC2u)2017/02/07(火) 21:15:28.38ID:z9Nfo4oVa
>>715
アセンブラでもC言語でも共通して、メモリアドレスについて理解しなければ書けないってだけ

だからアセンブラが理解できてればポインタ(メモリアドレスに関係する)でつまずかないのはあたりまえ

普通はC言語からやったほうがいいと思うよ
アセンブラは実際に動かして楽しめるプログラムが書けるまでが長すぎる
0722デフォルトの名無しさん (ワッチョイ b3ee-z2sC)2017/02/07(火) 21:39:21.18ID:p6Enp6MA0
>>715
アセンブラが分かってればCのポインタは簡単に理解できるって話で、ポインタの理解はアセンブラの方がし易いって話ではない
初学者ならCからやればいいと思う
0723デフォルトの名無しさん (アウアウカー Sae7-aC2u)2017/02/08(水) 09:03:15.79ID:5CFRofDQa
>>715
両方同時にやればいいんじゃない?
0724デフォルトの名無しさん (ワッチョイ c319-1ST5)2017/02/08(水) 11:02:59.02ID:T/lSiKkL0
概念では躓かなかったけど記述方法で戸惑った。
特に構造体関連で。
0725デフォルトの名無しさん (ワッチョイ 6f4d-qds7)2017/02/08(水) 11:41:50.29ID:PF6smBxU0
アセンブラは覚える構文が少ないらしく、いきなり核心のメモリアドレスに触れることができるので、
メモリアドレスの操作?仕組み?を理解するのに時間がかからないと思っていました

ここでポイントを押さえておいた上で、Cに入ったほうが効率的かなと思っていました。
0726デフォルトの名無しさん (ワッチョイ 7f5b-PzOe)2017/02/08(水) 12:26:20.76ID:Pzm1o9Vt0
アセンブラとかマイコンでも扱わない限り覚える必要ねえよ。
0727デフォルトの名無しさん (ドコグロ MM67-ubpA)2017/02/08(水) 12:41:20.99ID:60qaxvBWM
デバグ時にはアセンブラの知識が必要になるね。
ただ上で言いたいのはアセンブリ言語じゃなくて、プロセッサのアーキテクチャのことだと思う
0728デフォルトの名無しさん (ブーイモ MMc7-oriA)2017/02/08(水) 12:44:26.94ID:KaMMl6/oM
>>725
自称ベテラン社員に騙されていると思われ。
俺も>>722の意見に同意かな。

いきなりアセンブリ言語を理解出来る素養があるなら、Cのポインタなんて簡単に理解出来るなら心配するな。
0729デフォルトの名無しさん (ワントンキン MM1f-nOPp)2017/02/08(水) 20:23:31.80ID:4jVc/9XqM
10代の頃アセンブラ2年くらいやったけど
Cやるのに役立ったかというとそうでもない
わかるやつは両方わかる
Cしか知らなくても困ることはない
そしてCが使いこなせる頃にはどんな言語でもすんなり入れる
0730デフォルトの名無しさん (ワントンキン MM1f-nOPp)2017/02/08(水) 20:24:56.95ID:4jVc/9XqM
最後に
Cに限らず
センスが全て
0731デフォルトの名無しさん (ワッチョイ 037b-AtEE)2017/02/08(水) 21:20:27.35ID:OCW6swXT0
センスが全てとか言うほどプログラミングは難しくない
一定の知能を持っていれば普通に習得できる
0732デフォルトの名無しさん (ドコグロ MM87-0Ly4)2017/02/08(水) 21:37:39.02ID:1HPstVT8M
Haskell やろうと思ったけど全然分からなかったぞ。
0733デフォルトの名無しさん (ワンミングク MM1f-PSyA)2017/02/08(水) 22:45:04.97ID:I+micAQkM
高位合成とかはCとかPythonで出来るようになったし
ASMの知識が邪魔になった事は無いな
0734デフォルトの名無しさん (ワッチョイ 365b-a31+)2017/02/09(木) 22:43:28.90ID:18LIUJ/70
>>729
C++無理。
0735デフォルトの名無しさん (ワッチョイ 12c0-1VpQ)2017/02/09(木) 23:05:05.32ID:fEK+ghC30
DTにCは無理
0736デフォルトの名無しさん (ワッチョイ 9bfd-ENO3)2017/02/10(金) 01:43:40.17ID:7WDeOmY50
<宿題>
----------------------------------------------------------------------
 int data[3][3][4] =
  {{{111,112,113,114},{121,122,123,124},{131,132,133,134}},
   {{211,212,213,214},{221,222,223,224},{231,232,233,234}},
   {{311,312,313,314},{321,322,323,324},{331,332,333,334}}};

  int *pa     = data[0][0];
  int (*pb)[4]  = data[0];
  int (*pc)[3][4] = data;
  int *pd[3];  pd[0] = data[0][0];  pd[1] = data[1][0];  pd[2] = data[2][0];

上記のように配列(data)とポインタ(pa, pb, pc, pd)を宣言した時、
(1) data[0][0][0]とdata[2][2][3]をポインタ pa, pb, pc のそれぞれを用いて記述せよ
(2) 同様に、ポインタ配列 pd を用いて記述する場合の一例を示せ
----------------------------------------------------------------------
アホな専門学校生です。
ちょうどポインタの総まとめ復習をやってるんだけど、さっっっぱり解らん (´・ω・`)
こんな3次元配列とポインタの組み合わせなんて、実際には滅多に使わないでしょ?
0737デフォルトの名無しさん (ワッチョイ 277b-VpYz)2017/02/10(金) 04:19:15.76ID:MRcACxyw0
全く使わない
0738デフォルトの名無しさん (ワッチョイ b37b-cWHS)2017/02/10(金) 06:03:19.35ID:jzO6JR0y0
>>736
fprintf(stdout, "%d %d\n", *(pa + 0), *(pa + 35));
fprintf(stdout, "%d %d\n", *(*(pb + 0) + 0), *(*(pb + 8) + 3));
fprintf(stdout, "%d %d\n", *(*(*(pc + 0) + 0) + 0), *(*(*(pc + 2) + 2) + 3));
fprintf(stdout, "%d %d\n", *(pd[0] + 0), *(pd[2] + 11));
こんな感じの回答を期待した問題なのかな
+0は冗長でもあったほうが理解しやすいかと思って入れておいた
いずれにしろわざわざ配列へのポインタ使ってただ面倒なだけであまりいい設問とは思えない
0739デフォルトの名無しさん (ワッチョイ 83dc-w/2a)2017/02/10(金) 08:05:16.01ID:VdPSphbn0
配列名が暗黙に先頭要素へのポインタに変換される、という言語仕様を説明するとき
多次元配列だと先頭要素(==ポインタの指す対象)の型は何? て部分がややこしいんで
こういう問題を作って理解を深めさせる、という意図は分かるんだが、
実際には滅多に使わないね。

多次元配列とポインタの関係が面倒なんで多次元配列を使うのを避ける
という面もあるかもしれんけど。
0740デフォルトの名無しさん (ドコグロ MM0f-o+a8)2017/02/10(金) 11:27:20.88ID:yPTk9ivWM
実際に使うかどうかじゃなくて、ちゃんと理解したかを問うてんでしょ
ちょっと微妙な問題だと思うけど、期待する回答はこんな感じでは

printf("%d %d\n", pa[0], pa[35]);
printf("%d %d\n", (pb[0])[0], (pb[8])[3]);
printf("%d %d\n", (pc[0])[0][0], (pc[2])[2][3]);
0741デフォルトの名無しさん (ワッチョイ 727c-CIv3)2017/02/10(金) 12:03:42.38ID:lKa0cLZB0
多次元配列の場合アドレスが必ずしも連続しないとすると
pa[35]でも問題ないんかいの?
0742デフォルトの名無しさん (JP 0Hbf-ONvP)2017/02/10(金) 12:28:12.40ID:mjSR9lfmH
http://ja.stackoverflow.com/questions/5022/%ef%bc%92%e6%ac%a1%e5%85%83%e9%85%8d%e5%88%97%e3%81%af%e4%b8%8d%e9%80%a3%e7%b6%9a%e3%81%8b
によると、

・連続するとは明示されていない
が、
・配列のsizeofは配列全体のサイズ
・配列の要素数を、sizeof 配列 / sizeof 要素 で求める例示がある
から演繹すると、パディングを入れる余地がないので、連続する実装しかできない

らしい
0743デフォルトの名無しさん (ドコグロ MM0f-o+a8)2017/02/10(金) 12:31:08.37ID:yPTk9ivWM
構造体じゃないからパディングは入らないはず
そもそも連続しないなら問題が成立しない
0744736 (ワッチョイ 9bfd-ENO3)2017/02/10(金) 17:01:41.36ID:7WDeOmY50
>>738-740
どうもご親切に有難うございました。これらを参考に、配列へのポインタの
基本に戻って一つ一つ確認していったら、何とか理解出来ました。
学校の若い新任講師の方はヤル気満々で張り切って色々教えてくれるのは
有難いんですが、テキストや市販の解説本には載ってないような所まで踏み込む
ことが多いので、みんな疲れ気味ですw
「君ら、ここを超えたら楽になるぞぉ!」が口癖なんですが、もう20回くらい
その「ここ」が出てきますた w
0745デフォルトの名無しさん (ワッチョイ b37b-cWHS)2017/02/11(土) 11:41:49.45ID:5YmzaeQg0
char *fgets(char * restrict s, int n, FILE * restrict stream);

fgets()の第2引数はどうしてsignedなのか
1文字も読み込まない指定は0で事足りるはずだが
読み込む文字数に負数を与えるなどという発想はどこから来たのか
もしかして適当に作ったの?実際gets_s()ではunsignedになってるし
0746デフォルトの名無しさん (ワッチョイ a73b-y12Z)2017/02/11(土) 13:27:24.67ID:6EGYaUFO0
なら第一引数も unsigned じゃないのかね?
キャラクターコードに負数を与えるなどという発想はどこから来たのか
0747デフォルトの名無しさん (ワッチョイ 7642-CIv3)2017/02/11(土) 13:41:09.00ID:XP9IRm+40
キャラクターコードじゃないだろう
0748デフォルトの名無しさん (ワッチョイ df85-phNF)2017/02/11(土) 14:50:34.52ID:Wyt6P4G00
>>745
まあ、size_t あたりが適当かもしれないね
0749デフォルトの名無しさん (ドコグロ MMc7-y12Z)2017/02/11(土) 17:37:03.93ID:nokJxoQMM
>>746
自己レスだけど、char 型は 8bit でもないし、signed かどうかは実装依存らしい。
0750デフォルトの名無しさん (アウアウカー Sa1f-adpx)2017/02/12(日) 00:29:59.89ID:ljRDyKT6a
>>746
実行基本文字集合はcharに入れても非負であることが、規格で決まってるからだろ
拡張文字が負数になるのが嫌なら、処理系で勝手にやれ
0751デフォルトの名無しさん (ワッチョイ 12e1-2uTt)2017/02/12(日) 03:48:52.18ID:Lo3A968W0
>>745
getsが存在してる地点でc言語の標準ライブラリなんて適当に決まってるだろ

intが1byteの処理系でもなければ困ることはないし
0752デフォルトの名無しさん (ワッチョイ 0f6f-rlq7)2017/02/12(日) 10:27:52.66ID:nF2JpTw90
>>745
fgetsはn-1バイト読む仕様だからunsignedだと問題となるからかな
0753デフォルトの名無しさん (ワッチョイ a73b-y12Z)2017/02/12(日) 10:28:20.07ID:DnVqAvNl0
>>751
byte は char と同じサイズだけど、何ビットか決まってないよね。
0754デフォルトの名無しさん (ワッチョイ fe13-cGUq)2017/02/12(日) 10:32:14.10ID:XNCDxJ480
>>752
え?具体的にどんな問題になるの?
0755デフォルトの名無しさん (ワッチョイ 277b-VpYz)2017/02/12(日) 10:32:20.61ID:MRPxQTsD0
1バイトが8bit以外の処理系を考慮するとか時間の無駄
0756デフォルトの名無しさん (ワッチョイ 0f6f-rlq7)2017/02/12(日) 11:03:45.39ID:nF2JpTw90
>>754
n=0のとき、アンダーフローしてラップアラウンドすると例えば0xffffffffバイトまで書けちゃうから
0757デフォルトの名無しさん (ワッチョイ 727c-CIv3)2017/02/12(日) 12:11:29.38ID:uTIQ0BBX0
引数の型を見るだけじゃなくて
関数の実装をちゃんと見ろっていうね
0758デフォルトの名無しさん (ワンミングク MM62-zyyT)2017/02/12(日) 14:21:53.64ID:3c2vZijwM
PDP-11に喧嘩ふっかけてるのかな
0759デフォルトの名無しさん (ワッチョイ 327d-E76/)2017/02/12(日) 15:37:31.50ID:xAcvDrFg0
コンピュータの初期のころは、バイト単位ではなくて、ワード単位になっていて、
記憶容量も4096ワードとか云っていた。

私が大学で使った〔1961年頃)HITACHのHIPAC-101という
パラメトロン素子を使ったコンピュータは、1短ワードが、21ビッ、で 8192ワード、
1長ワードは、41ビットで、4096ワードでした。どちらも、先頭の1ビットは
符号ビットです。

たしか、CDC-3600は、1ワードが64ビットでなかったかと思います。..
0760デフォルトの名無しさん (ワッチョイ 277b-VpYz)2017/02/12(日) 16:25:36.88ID:MRPxQTsD0
でっていう
そんな化石を考慮するとか時間の無駄
0761デフォルトの名無しさん (ワッチョイ 323c-zlRv)2017/02/12(日) 18:23:32.93ID:yxF5W3i10
>>756
ちょっとまともな実装ならサイズのチェック入れて 0 以下なら NULL 返してる
0762デフォルトの名無しさん (ワッチョイ 325b-9+3L)2017/02/12(日) 18:56:08.07ID:PBdTcC4F0
処理系に依存する部分が無いかを確認するのは基本中の基本。
0763デフォルトの名無しさん (ワッチョイ 367b-F1sY)2017/02/12(日) 22:38:58.16ID:9zSa05ws0
規格を読める者はおらんか!
0764デフォルトの名無しさん (ワッチョイ a73b-y12Z)2017/02/12(日) 23:24:35.30ID:DnVqAvNl0
>>763
規格で決まってないから悪いんだけどね。
実装依存言うからコンパイラの説明書に書いてあるんじゃね?
0765デフォルトの名無しさん (アウアウカー Sa1f-adpx)2017/02/12(日) 23:36:22.07ID:M7O5WewRa
実装依存って言っても、処理系定義と未規定と未定義では意味が違うぞ
CHAR_BITは処理系定義だから、規格上は処理系には文書化する義務がある
0766デフォルトの名無しさん (ワッチョイ 277b-VpYz)2017/02/12(日) 23:41:11.55ID:MRPxQTsD0
charが8bit以外になってる処理系なんて、それ向けに書くことになってから考えればいいだけ。それすら無いだろうけど。
今まで書いたある程度の規模の普通のCのプログラムで8bit以外でも動くといえる奴居るのか?無いだろ?
int8_t使ってるからバッチリだ?それ実装するかどうかは処理系依存だから。int8_tをパディング無しで実装できるなら最初からcharを8bit以外になんてしねえよ。
0767デフォルトの名無しさん (ワッチョイ 12c0-1VpQ)2017/02/13(月) 07:34:20.16ID:XzL9GDXP0
電卓4bitやで
0768デフォルトの名無しさん (ワッチョイ d37b-Dnc6)2017/02/13(月) 09:02:24.85ID:TFV2uoJG0
つ アセンブラ
0769デフォルトの名無しさん (JP 0H72-cGUq)2017/02/13(月) 11:55:17.52ID:Qx76ZGdPH
ttp://www.geocities.jp/kenji_y0328/crenshu/renshu/r035.gif
juni_t[kensu]=1 て、どういう意味ですか?
0770デフォルトの名無しさん (ドコグロ MM8a-o+a8)2017/02/13(月) 12:35:20.50ID:pV7Y/oW+M
一位
0771デフォルトの名無しさん (ワッチョイ fe13-cGUq)2017/02/13(月) 21:02:56.35ID:347RyUJ/0
>>766
規格はどうなっている?規格がすべてだ.お前の思い込みなど犬にくわれてしまえ

ISO/IEC 9899:1999 5.2.4.2.1 Sizes of integer types <limits.h>
Their implementation-defined values shall be equal or greater in magnitude
(absolute value) to those shown, with the same sign.

? number of bits for smallest object that is not a bit-field (byte)
CHAR_BIT 8

8ビット以上であっても問題ない
0772デフォルトの名無しさん (ワッチョイ 277b-VpYz)2017/02/13(月) 21:25:44.28ID:XAOuYKtl0
>>771
だから何?規格上許されてる事は知ってるよ。その上でそれ向けでもないのにそれを考慮して
プログラムを書くことは時間の無駄と言ってる。
0773デフォルトの名無しさん (ワッチョイ 8375-eSCi)2017/02/13(月) 21:31:33.31ID:3cGA2sF00
>>766
>int8_tをパディング無しで実装できるなら最初からcharを8bit以外になんてしねえよ。
どういう意味?
int8_tをパディング有りだと実装できるの?そんな実装あり得ないから。
0774デフォルトの名無しさん (ワッチョイ 83dc-w/2a)2017/02/13(月) 21:38:40.52ID:vJYKnMsc0
>>769
配列名 juni_t はおそらく「順位のテーブル」の気持ちだろう。
正しい順位は後で(全員の点数の情報が集まった時点で)確定するとして、
とりあえず1位という仮の順位を入れてる。

なぜ仮の順位として1を入れるか?
それは2重のforループがそういう仕掛けになってるから。
0775デフォルトの名無しさん (ワッチョイ 277b-VpYz)2017/02/13(月) 21:49:40.18ID:XAOuYKtl0
>>773
そんな回りくどい言い方しなくても、int8_t自体パディング入ることが許されてないから冗長とでも言えばいいのに
0776デフォルトの名無しさん (ワッチョイ 0f19-ENO3)2017/02/14(火) 15:51:45.18ID:V3vYuU1u0
「極々稀な環境では違うから断言してはダメ!!」
「最新規格では出来るから出来ないと言うのは間違い!」

うぜぇ…。
0777デフォルトの名無しさん (JP 0H72-cGUq)2017/02/14(火) 15:57:28.57ID:yB/Qg5nmH
int n;
char cnt[10];

scanf("%d", &n);
while(n > 0){

scanf("%s", &cnt[n]);
n--;

}

while(n > 0){

printf("%s!\n", &cnt[n]);

n--;
}


return 0;
これどうすればいい?
2
Hello
Hello
こうしたいだけです
0778デフォルトの名無しさん (フリッテル MM4e-0t/q)2017/02/14(火) 17:08:52.14ID:nPLzkrM8M
質問が下手くそすぎる
とりあえず
X:scanf("%s", &cnt[n]);
O:scanf("%c", &cnt[n]);
じゃなかろうかと
0779デフォルトの名無しさん (ワッチョイ 9f8c-CIv3)2017/02/14(火) 19:27:17.09ID:YTgNi2GY0
int i, num;
char msg[80];

printf("Input number: ");
scanf("%d", &num);
printf("Input message: ");
scanf("%s", msg);

printf("***Output***\n");
printf("%d\n", num);
for (i = 0; i < num; i++)
printf("%s\n", msg);

return 0;
0780デフォルトの名無しさん (ワッチョイ ef3c-cGUq)2017/02/14(火) 19:29:41.95ID:LarrsDUP0
JPのどうすればいい?君 余所でやってくれ
0781デフォルトの名無しさん (ワッチョイ a717-/ZxI)2017/02/14(火) 21:07:20.19ID:lbXIx+/s0
一行ずつ取得のプログラムを書いてみたけど、自分でみても糞ースになってしまった
ttp://stdput.com/dat/program/stdin.zip
0782デフォルトの名無しさん (JP 0H72-cGUq)2017/02/15(水) 10:49:47.58ID:x30SJT5YH
ScanfをConstにするには、どうすればいい?
0783デフォルトの名無しさん (ブーイモ MM4b-rAfO)2017/02/15(水) 11:17:08.06ID:VIlp91RXM
来たれ!エスパー
0784デフォルトの名無しさん (ワッチョイ efd4-IbQK)2017/02/15(水) 12:04:09.11ID:THR1BzY10
#define Scanf Const
0785デフォルトの名無しさん (フリッテル MM4e-0t/q)2017/02/15(水) 12:47:35.60ID:Zq/eSbT+M
C言語以前に自然言語を勉強した方がいいレベル
0786デフォルトの名無しさん (ワッチョイ 325b-9+3L)2017/02/15(水) 12:50:34.25ID:wlqCSLaa0
Scanfで読み込んだ値をConst化するにはどうしたら良いか、って意味だろう。
0787デフォルトの名無しさん (ワッチョイ b34e-K2za)2017/02/15(水) 13:09:00.67ID:Nh3it6Lz0
そんなことは無理
0788デフォルトの名無しさん (フリッテル MM4e-0t/q)2017/02/15(水) 14:51:08.46ID:p38yo1PrM
変数から定数、定数から変数への変換は出来ない
定数を変数に代入なら出来る
最近のCだと定数宣言と同時の代入に限って
変数を定数に代入なら出来る
0789デフォルトの名無しさん (ワッチョイ cf48-QAjE)2017/02/16(木) 04:18:45.40ID:AD6yJS9r0
>>786
日本語的にそのとらえかたも凄いな
0790デフォルトの名無しさん (ガラプー KK9f-jCT1)2017/02/16(木) 12:54:12.44ID:NXvZoMniK
scanfはもともと定数だろ
Scanfはしらんが
0791デフォルトの名無しさん (JP 0H7f-eq+O)2017/02/16(木) 14:30:19.98ID:QZUL27n8H
enumって配列でしょ?
どういう時に使うの?
0792デフォルトの名無しさん (フリッテル MMff-SEkl)2017/02/16(木) 14:30:47.28ID:2GiI1VjxM
scanfは関数
それ以外の何でもないよ
0793片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK9f-2nU5)2017/02/16(木) 14:41:22.10ID:soSRPnhwK
>>791
enumは列挙型を意味する。名前付き定数をまとめたもの。
0794デフォルトの名無しさん (ドコグロ MM7f-+HG0)2017/02/16(木) 14:41:44.66ID:BwNR8qwBM
>>792
int scanf; は出来ないの?
0795デフォルトの名無しさん (フリッテル MMff-LjcY)2017/02/16(木) 17:37:49.55ID:QlMPrb5UM
enumはdefine定数と比べて型チェックしてくれる点が便利
0796デフォルトの名無しさん (ドコグロ MM9f-/Y6J)2017/02/16(木) 18:16:20.41ID:54UL787NM
>>795
C言語だよね。例えばどういう場合?
0797デフォルトの名無しさん (フリッテル MMff-SEkl)2017/02/16(木) 18:29:02.02ID:jxTm1qP3M
Cのenumって実態はただのsined intじゃなかたっけ
だからintとenumの区別は実質人の目視でじゃないと区別できなかったと思ったけど
0798デフォルトの名無しさん (JP 0H1f-vlft)2017/02/16(木) 19:24:44.49ID:hXFmZ55QH
デバッガレベルでも情報が残るから追いやすいと聞いたが
デバッガ側のサポートレベルにもよるのかな
0799デフォルトの名無しさん (ササクッテロレ Sp9f-89cz)2017/02/16(木) 19:37:28.36ID:VWTLMYuEp
ポインタが必要な具体的な場合とその理由は?
0800デフォルトの名無しさん (JP 0H9f-88IT)2017/02/16(木) 19:51:52.57ID:jO2RAfrNH
>>799
課題乙
0801デフォルトの名無しさん (ワッチョイ 5b3c-eq+O)2017/02/16(木) 19:57:33.63ID:JWmhnLgw0
qsort を使うとき
インターフェイスがそう要求しているから(そして、qsortを実装するなら そうせざるを得ないから)
0802デフォルトの名無しさん (ドコグロ MM9f-My/j)2017/02/16(木) 20:04:25.41ID:+lEx52V9M
>>794
スコープ違うなら普通にできるでしょ
0803デフォルトの名無しさん (ワッチョイ cbe3-WWha)2017/02/16(木) 20:13:58.84ID:Jbe8pVua0
Cで何を作れたら「出来る」って自慢できる?
0804片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK9f-2nU5)2017/02/16(木) 20:18:35.62ID:soSRPnhwK
>>803
広辞苑に載っている単語でしりとりができるプログラムなんてどうだい?
0805片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK9f-2nU5)2017/02/16(木) 20:23:24.18ID:soSRPnhwK
C言語を本気でやるなら、一度はLinuxやReactOSなどのOS開発、自作マシンの組み込み関係に携わってもらいたいものだ。
0806デフォルトの名無しさん (ワッチョイ fb42-P9CU)2017/02/16(木) 20:30:02.28ID:33Tn7KWx0
AIかな
0807デフォルトの名無しさん (ワッチョイ 6f13-eq+O)2017/02/16(木) 20:31:11.01ID:DJC3UylG0
>>805
コンパイラはつくってみたいな,と思ってる
0808デフォルトの名無しさん (アウアウカー Sa9f-67jm)2017/02/16(木) 20:43:45.58ID:IVFumkCMa
>>798
enumはシンボルが残せるからね
defineだとプリプロセッサで置換されて、ただの整数定数になるから、同じ値で意味の異なる定数の区別がつかない
実際に役立ったことはないけど
0809デフォルトの名無しさん (ワンミングク MM7f-EdSj)2017/02/16(木) 21:53:58.91ID:vUbaJs50M
>>803
スクリーンエディタ
0810デフォルトの名無しさん (ワッチョイ 5f17-P9CU)2017/02/16(木) 21:59:14.27ID:+OCSH22k0
>>803
デバイスドライバ
0811デフォルトの名無しさん (ワッチョイ 4fcb-4ADt)2017/02/16(木) 22:11:12.78ID:u2+nKOoP0
>>796
795です。すみませんC++の挙動だった模様・・・

enum dir { front, back, left, right };
enum dir_news { north, east, west, south };
void move(enum dir d) { }
void move_news(enum dir_news news) { }
int main()
{
move(back); /* OK */
move_news(back); /* gccではOK、g++ではエラー */
return 0;
}
0812デフォルトの名無しさん (ワッチョイ cbe3-WWha)2017/02/16(木) 23:34:52.68ID:Jbe8pVua0
>>804
ふむふむ、
それって広辞苑に載ってる単語全てプログラムに書き込む必要がある訳じゃないよね?

>>809
>>810
ごめん。専門用語全然わからん。
0813デフォルトの名無しさん (ワッチョイ 5f17-P9CU)2017/02/17(金) 00:33:04.79ID:aZqDCFlW0
>>812
双方向チェーンリストで追加、挿入、削除が実装できたら
初歩中の初歩としてなら、とりあえず「出来る」といっても良いんではないか
0814デフォルトの名無しさん (ワッチョイ 5f3c-Scgb)2017/02/17(金) 00:53:51.69ID:BlebXdwz0
linked listのこと?
0815デフォルトの名無しさん (ブーイモ MM7f-88IT)2017/02/17(金) 00:54:12.00ID:28DYmd6rM
何を作れるかなんて興味分野しだいで何でもいいけど、
珠玉のプログラミングとかプログラミング作法あたりすらすら読めて、
そうそうそうだよねってほくそ笑むくらいになればいいと思うよ
0816デフォルトの名無しさん (ワッチョイ 6f5a-eq+O)2017/02/17(金) 00:58:36.02ID:FTwAMdJ10
pythonなんて少しやっただけで結構実用的なことができるので
最近Cなんてなんであんなに悪戦苦闘して学んだのかわからなくなった。
仕事で組み込みいじる以外Cなんて今更だし・・・
0817デフォルトの名無しさん (ドコグロ MM9f-My/j)2017/02/17(金) 07:02:56.84ID:loItl+7kM
>>815
> 珠玉のプログラミングとかプログラミング作法あたりすらすら読めて、
> そうそうそうだよねってほくそ笑むくらいになればいいと思うよ
言いたいことはすごくわかるが、C言語ができるって言うのとはちょっと違う気がする
0818デフォルトの名無しさん (アウアウカー Sa9f-6x/Q)2017/02/17(金) 07:19:33.42ID:UftE5YWRa
オープンソースにコントリビュートしたら一人前だな。
0819デフォルトの名無しさん (ワッチョイ fb3b-+HG0)2017/02/17(金) 07:55:06.06ID:G0DLbtSq0
>>816
ライブリやらフレームワークやらが揃ってれば、API叩くだけだからな。
0820デフォルトの名無しさん (フリッテル MMff-SEkl)2017/02/17(金) 09:46:59.40ID:IRfl8X9cM
>>819
そうそう
Cはその元を作る言語
だからアルゴリズムや数学、
メモリやCPUの仕組みを理解してない奴には
Cは難しい
0821デフォルトの名無しさん (ワッチョイ fb7b-Mjmn)2017/02/17(金) 09:56:10.97ID:ICuCz4ej0
>>820
C使うのに数学とかいらんやろ
Cは環境作るのがひたすら面倒くさいだけ。
ライブラリは他の言語に負けず劣らず豊富だが、ビルド方法や配置がライブラリー毎に統一されてないので一つ一つ確認しなきゃならない面倒くさい。ああ、面倒くさい。
さらに環境によってもビルド方法が違う。一つ一つやってたら組み合わせ爆発起こすわ
0822デフォルトの名無しさん (ワンミングク MM7f-QAjE)2017/02/17(金) 12:22:49.67ID:7Vd7dWR4M
長年やってたらライブラリが充実してくるから
めんどくささもだいぶ解消されるけどね
0823デフォルトの名無しさん (ドコグロ MM9f-My/j)2017/02/17(金) 12:31:17.48ID:loItl+7kM
複数環境考えてるのに cmake とか使ってないバカ
0824デフォルトの名無しさん (ワンミングク MM7f-Mjmn)2017/02/17(金) 14:33:34.58ID:6x4nDOQLM
なぜ使ってないと思ったのか。
使うライブラリ全てCMakeに対応してるわけじゃなかろうに。
0825デフォルトの名無しさん (フリッテル MMff-SEkl)2017/02/17(金) 15:17:44.43ID:IFIS8X9xM
>>814
その事だよ
0826デフォルトの名無しさん (ワッチョイ 5fd4-OEnk)2017/02/17(金) 19:56:15.06ID:2DyCKvxW0
構造体の入れ子なのですが。
struct st_a { char c; int i; }; がある時、これを内包する構造体は
1) struct st_b { struct st_a a; } b; のように宣言していたのですが。
2) struct st_b { struct st_a; } b; でもコンパイルは通るみたいです。

メンバ変数は 1)の場合は b.a.c、2)の場合は b.c のようになるみたいですが、
2)の記述方法はC言語のルールに従ったものでしょうか? それとも、たまたまコンパイルが通っただけ?
0827デフォルトの名無しさん (ワッチョイ 5b3c-eq+O)2017/02/17(金) 20:06:06.50ID:rC3nLHS90
C11 の無名構造体関連?
0828デフォルトの名無しさん (ドコグロ MM9f-My/j)2017/02/17(金) 20:14:20.85ID:loItl+7kM
>>824
ライブラリを作る話なのか使う話なのかはっきりしろよ...
0829デフォルトの名無しさん (ドコグロ MM9f-My/j)2017/02/17(金) 20:15:55.94ID:loItl+7kM
>>826
前方参照と見なされてるだけでしょ
仕様だし必要
0830デフォルトの名無しさん (ワッチョイ 5fd4-OEnk)2017/02/17(金) 20:18:54.57ID:2DyCKvxW0
情報どうもです。仕様と理解しました。
0831デフォルトの名無しさん (アウアウカー Sa9f-67jm)2017/02/17(金) 20:42:50.63ID:Mg03M+Cca
タグを省略してないし、無名構造体ではないでしょ
gcc,clangどちらも警告吐いたし、内部のメンバにはアクセスできなかった
処理系の独自拡張じゃねーの?
0832デフォルトの名無しさん (ワッチョイ 5fd4-OEnk)2017/02/17(金) 20:56:05.81ID:2DyCKvxW0
>>831
なるほど、実装依存ですか・・・。コンパイラは20年くらい前の古いもの(VC6等)です。
C言語の規格なのか、コンパイラ依存なのか、念のため知っておきたかったもので。

- - - - - - - - - - - - - - - - - -

もう1つ、構造体の入れ子に関する質問なのですが
struct st_a { char c; int i; }; があるとき、これを内包し、かつ「先頭のメンバ」とする構造体
struct st_b { struct st_a a; double d; } b; があるとき

外側の構造体(struct st_b)のインスタンス(?)b を、内側の構造体(struct st_a)に型変換した上で、
メンバ変数 c、i を参照しようとするような記述、すなわち

((struct st_a*)&b)->c、((struct st_a*)&b)->i

これらが、b.a.c、b.a.i と完全に一致することは、
C言語の仕様上、保証されているのでしょうか、それとも実装依存ですか?
0833デフォルトの名無しさん (ワンミングク MM7f-EdSj)2017/02/17(金) 21:02:59.91ID:+cYNGtlMM
offsetof の実装を確認するべし
0834デフォルトの名無しさん (アウアウカー Sa9f-67jm)2017/02/17(金) 21:04:12.81ID:Mg03M+Cca
構造体のアドレスと構造体の先頭メンバのアドレスは一致することが保証されてるから、一致する
ただし、最適化のために規格違反のメンバ順番入れ換えを行うコンパイラもあるらしいのと
お作法的に良いとは言えないから、多用するならcontairner_ofみたいなの実装した方が良いとは思う
0835デフォルトの名無しさん (アウアウカー Sa9f-67jm)2017/02/17(金) 21:15:42.69ID:Mg03M+Cca
言葉足らずだった
st_bからst_aに変換するときはちゃんとメンバ経由でアクセスして、逆の時はcontainer_ofを使う

コンパイラ固定で流用もしないなら好きにすれば良いと思うけど
0836デフォルトの名無しさん (ワントンキン MM7f-Mjmn)2017/02/17(金) 21:22:24.48ID:RXF3ogG3M
>>828
>>821 読んだらどっちの話か自明だと思うのだが
0837デフォルトの名無しさん (ワッチョイ 5fd4-OEnk)2017/02/17(金) 21:26:02.06ID:2DyCKvxW0
>>833-835
情報ありがとうございます。ちょっと勉強してみます。
0838デフォルトの名無しさん (ワッチョイ 5f3c-My/j)2017/02/17(金) 21:28:12.08ID:Qw3pRN/40
>>836
で、どっちなの?
0839デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/17(金) 21:41:51.92ID:Ivxuia8Y0
>>829
ちげーよ
無名構造体って言うんだよ 10年ROMってろ
0840デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/17(金) 22:10:21.92ID:Ivxuia8Y0
誤 無名構造体
正 匿名構造体
0841デフォルトの名無しさん (ワッチョイ dfc0-fRM8)2017/02/17(金) 23:02:32.95ID:cMOBM5D+0
一番恥ずかしいパターンやな
0842デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/18(土) 02:37:05.42ID:tWz1Zv+W0
前方参照よりは全然マシマシ
0843デフォルトの名無しさん (ワッチョイ 7ba1-sbgu)2017/02/18(土) 12:22:47.58ID:Jfc71qpE0
>>799
ポインタがあれば、むだなコピーをへらせる可能性があるぞ
他の言語は、むだなことやってる。だからでかいし、おそい
0844デフォルトの名無しさん (ワッチョイ 6f13-eq+O)2017/02/18(土) 15:48:27.98ID:TYdbt8Dm0
>>843
C には move セマンティクス はないでしょ?
0845デフォルトの名無しさん (ワッチョイ 5f3c-My/j)2017/02/18(土) 18:32:43.13ID:52dA0McO0
>>844
自分でやればいいだけ
0846デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/18(土) 22:04:52.02ID:tWz1Zv+W0
>>843
アホウ 他の言語は参照渡しだ
0847デフォルトの名無しさん (ワッチョイ 7ba1-vagz)2017/02/18(土) 23:03:17.35ID:Jfc71qpE0
部分文字列は、参照ではないとおもう
むだにオブジェクトを生成してる
0848デフォルトの名無しさん (スププ Sd7f-Aztl)2017/02/18(土) 23:06:47.41ID:YvJV55Qkd
部分文字列で無駄なコピー減らすのすぐ事故りそう
0849デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/18(土) 23:09:44.21ID:GhmlKVYj0
1バイトが必ず8ビットとは限らないが、
1バイトずつ番地が与えられるのはコンピューターの決まりなんだ。

ポインタはその番地に直接アクセスできるわけだね。
これは使い方、特にアセンブラライクなイメージでプログラミングをする時には便利だね。

ポインタが有る事によって、C言語はアセンブラの役割も果たしていると言えるね。
0850デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/18(土) 23:53:48.89ID:tWz1Zv+W0
ワードマシンを知らない小僧は引っ込んでろ
0851デフォルトの名無しさん (ワッチョイ fb7b-Mjmn)2017/02/18(土) 23:58:35.24ID:ytfDKNod0
>>847
そんなケースではCでもコピーして新たに作ってるだろ
文字列を引数に取る関数の殆どがnull終端を要求してるんだから
0852デフォルトの名無しさん (ワッチョイ 0b7b-+OgX)2017/02/19(日) 00:03:05.03ID:0M5Cx5qf0
ある文字列から非破壊且つ他の配列にコピーしないで部分文字列を渡せるの?
開始位置は良くても終端はどうする?
0853デフォルトの名無しさん (ワッチョイ 0b4e-N9BQ)2017/02/19(日) 00:06:59.52ID:B60dHD4D0
サイズも一緒に渡せば終端はわかるな
0854デフォルトの名無しさん (スププ Sd7f-Aztl)2017/02/19(日) 00:07:34.14ID:JRoh81o2d
最初と最後でもいいぞ
0855デフォルトの名無しさん (ワッチョイ 0b4e-N9BQ)2017/02/19(日) 00:08:51.26ID:B60dHD4D0
しかし部分文字列のポインタ渡したら破壊される可能性があるから、
そういう事は普通やらないだろ
0856デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/19(日) 00:10:38.15ID:EpgJz6zw0
ワードマシンだってワードごとに番地が与えられるだろう。
その番地にアクセスするのがポインタって事だな。
0857デフォルトの名無しさん (ワッチョイ fb7b-Mjmn)2017/02/19(日) 00:14:50.90ID:Av0JmT9x0
>>852
当たり前だけど長さも一緒に渡せば可能だよ。
C++ならstring_viewというのが今年標準に入る
0858デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/19(日) 00:17:31.57ID:EFiaBPs90
>>856
> 1バイトずつ番地が与えられるのはコンピューターの決まりなんだ。
0859デフォルトの名無しさん (ワッチョイ 0b7b-+OgX)2017/02/19(日) 00:19:11.31ID:0M5Cx5qf0
それ文字列渡してるんじゃなくて"取り出させてる"んでしょ
0860デフォルトの名無しさん (ワッチョイ 5f90-88IT)2017/02/19(日) 00:23:13.07ID:0+gPqcHf0
>>858
ワードをバイトと呼べばいいだけだろ
0861デフォルトの名無しさん (ワッチョイ 0b4e-N9BQ)2017/02/19(日) 00:24:23.86ID:B60dHD4D0
値渡ししたいならサイズ+1の配列でも用意すればいい
0862デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/19(日) 00:38:00.57ID:EFiaBPs90
ワードをバイトと呼ぶ?
頭の悪い奴の考えは意味不明過ぎる
0863デフォルトの名無しさん (ワンミングク MM7f-EdSj)2017/02/19(日) 00:48:04.14ID:dh11yliXM
積算電力計のバイトはどこにあるんですか?
アナログコンピューターはコンピューターに含まれないのですか?
0864デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/19(日) 00:57:29.15ID:EpgJz6zw0
はいはい、俺が悪かった。

昔のワードマシンやキャラクタマシンでのアドレスの付け方を説明せず、
すみませんでした。

コンピューターもいろんなコンピューターが有り、
アナログコンピューターなどの説明をせずにすみませんでした。
0865デフォルトの名無しさん (ワッチョイ 5f3c-My/j)2017/02/19(日) 07:50:42.99ID:ngALvOwB0
>>864
はたから見てても恥ずかしいからもうやめとけ
0866デフォルトの名無しさん (ワッチョイ cbdc-92cl)2017/02/19(日) 08:12:56.62ID:bdyBF4EH0
むしろ重箱の隅をつつく他に能のない「言語の法律家」に
絡まれたツイてない人、に思えるけど。
0867デフォルトの名無しさん (ワッチョイ 5f3c-My/j)2017/02/19(日) 08:49:45.75ID:ngALvOwB0
>>856 だけならまだしも >>864 とか小学生かよ w
って話だろ
0868デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/19(日) 18:42:33.14ID:EFiaBPs90
珍妙なアーキテクチャ引っ張りだきてきたなきたな
一文字が8bit未満ではC言語の要求を満たせないぞ

wikipediaより
キャラクタマシン(キャラクタ指向マシン)は、8ビット未満(多くの場合)のサイズの「キャラクタ」で文字を表現し(キャラクタ (コンピュータ)#初期のコンピュータを参照。以下「字」とする)、
主記憶が字単位でアドレス付けされている(キャラクタアドレッシング)か4字ないし6字程度を1ワードとしていて、(ワード単位の演算を得意とするワードマシンに対し)字単位の処理を得意とするコンピュータである。
0869デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/19(日) 20:17:09.99ID:EpgJz6zw0
> 1バイトずつ番地が与えられるのはコンピューターの決まりなんだ。

に対してワードマシンもあるだろうって言ってんだろう?

だから番地はワードマシンならワードごと、キャラクタマシンならキャラクタごとに割り当てられる、って説明しろって事だろ?


キャラクタマシンはメジャーだろ。何で珍妙なんだよ
0870デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/19(日) 20:36:56.95ID:EpgJz6zw0
>>868
おまえがさ、

850 デフォルトの名無しさん (ワッチョイ 9b7b-KWkY) sage ▼ 2017/02/18(土) 23:53:48.89 ID:tWz1Zv+W0 [3回目]
ワードマシンを知らない小僧は引っ込んでろ

って言ったんだよな。

ワードマシンを知ってる人間が、何でキャラクタマシンが珍妙になるの。
0871デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/19(日) 20:52:34.52ID:EFiaBPs90
> キャラクタマシンはメジャーだろ。何で珍妙なんだよ
お前、自分がスゲー無知な上に読解力も欠如しているバカだと言う事を認識した方が良いぞ
キャラクタマシンなんか博物館にでも行かなきゃお目にかかれねーわ w

バイトマシン
https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E3%83%9E%E3%82%B7%E3%83%B3
バイトマシン(バイト指向マシン)とは、1バイト単位で主記憶にアドレス付けされた(バイトアドレッシングの)コンピュータのこと。1バイトは通常は8ビットである。

ワードマシン
https://ja.m.wikipedia.org/wiki/%E3%83%AF%E3%83%BC%E3%83%89%E3%83%9E%E3%82%B7%E3%83%B3
ワードマシン(ワード指向マシン)とは、メモリのアドレス付けがバイト(通常は8ビット)単位ではなく、12ビット、16ビット、36ビット等のワード単位で(ワードアドレッシング)、ワード単位の演算を得意とするコンピュータのこと。

キャラクタマシン
https://ja.m.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%9E%E3%82%B7%E3%83%B3
キャラクタマシン(キャラクタ指向マシン)は、8ビット未満(多くの場合)のサイズの「キャラクタ」で文字を表現し(キャラクタ (コンピュータ)#初期のコンピュータを参照。
以下「字」とする)、主記憶が字単位でアドレス付けされている(キャラクタアドレッシング)か4字ないし6字程度を1ワードとしていて、(ワード単位の演算を得意とするワードマシンに対し)字単位の処理を得意とするコンピュータである。
0872デフォルトの名無しさん (アウアウカー Sa9f-6x/Q)2017/02/19(日) 21:04:07.17ID:on+xGxJYa
C言語スレでしょ?32ビット以上が基本だろ。それ以前の話ならアセンブラスレでやれば?
0873デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/19(日) 21:06:08.10ID:EpgJz6zw0
ワードマシンを知らない人間は黙ってろと言う人間が、
キャラクタマシンが珍妙で博物館にでも行かないとお目にかかれないとか言うのは、
おかしいぞ。

絶対ワードマシンの時代も知らないだろつの。
0874デフォルトの名無しさん (ワッチョイ 5f3c-My/j)2017/02/19(日) 21:46:15.24ID:ngALvOwB0
そもそもキャラクタマシンなんてまともな定義あるの?
0875デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/19(日) 21:54:21.75ID:EFiaBPs90
お前は自分がスゲー無知でバカだと言う事を認識すべきだと忠告したぞ

ワードマシンなら博物館に行かずとも、今でも入手出来て遊べる
Digital Signal Processor通称 DSPって奴はワードマシンだ
バイトアドレッシング出来るDSPが存在する可能性は否定しない
0876デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/19(日) 22:05:56.56ID:EpgJz6zw0
> 1バイトずつ番地が与えられるのはコンピューターの決まりなんだ。

に対してのワードマシンもあるだろうっておまえ言ってんだろ?

だったらバイトマシン以外の番地の付け方を説明もするなら、ワードマシンとキャラクタマシンの番地の付け方の説明もせんといかんだろう。

なんでそれでキャラクタマシンの番地の付け方を説明して、キャラクタマシンが珍妙になるの。

キャラクタマシンの番地の付け方を省くなら、バイトマシン前提でワードマシンの説明を省いてもよいだろ。
0877デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/19(日) 22:12:05.56ID:EpgJz6zw0
キャラクタマシンのアーキテクチャが何で珍妙なのか説明しろよ。
メジャーもメジャーだろ。
0878デフォルトの名無しさん (ブーイモ MM1f-VS2f)2017/02/19(日) 22:13:24.27ID:Zg7CBD6QM
>>874
昔のNECのコンピューターがそうだな。ビット数が少ないから
安く作れる。個人的にはCOBOL専用機だと思う。
0879デフォルトの名無しさん (アウアウカー Sa9f-Vuaq)2017/02/19(日) 22:22:12.24ID:itkc0h94a
ここはなんのスレだ
0880デフォルトの名無しさん (ワッチョイ eb9a-XQTV)2017/02/19(日) 22:22:37.73ID:qRKd/jmw0
UTF−16マシン
0881デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/19(日) 22:30:17.54ID:EFiaBPs90
>>876
本当に呆れるくらいバカだな そんなに頭悪くて生きるの辛く無いか?
0882デフォルトの名無しさん (スププ Sd7f-Aztl)2017/02/19(日) 22:35:17.66ID:5WEM4D2Ld
流石に荒れすぎだろ
もうやめろ
0883デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/19(日) 22:43:39.75ID:EpgJz6zw0
>>881
俺はバイトマシン以外の番地の付け方もちゃんと説明したよな。
ワードマシンもあるだろと言う突っ込みに、
バイトマシン・ワードマシン・キャラクタマシンの番地の付け方があるとな。

おまえは、なんでキャラクタマシンのアーキテクチャが珍妙なのか説明しろよ。
0884デフォルトの名無しさん (ワッチョイ 5fcf-Z7AI)2017/02/19(日) 23:41:11.49ID:Tyy902Hw0
※個人の感想です。
0885デフォルトの名無しさん (ワッチョイ fb3b-+HG0)2017/02/19(日) 23:53:40.93ID:9X+TsKgl0
キャラクタマシンって、痛車のことだろ?
0886デフォルトの名無しさん (ワッチョイ 9b7b-3Ih/)2017/02/20(月) 09:07:24.62ID:NnqcO0cq0
>>833
> 俺はバイトマシン以外の番地の付け方もちゃんと説明したよな。
> 1バイトずつ番地が与えられるのはコンピューターの決まりなんだ。
という、無知丸出しのウソ発言に突っ込まれ、何度もみ言い逃れを
繰り返し、あがいた挙句に無理だと観念し、必死にググって
ピコーン そうだ! 他のは昔のコンピュータと言い逃れとようと愚かな
試みをしたけれど、やっぱりバカはバカでワードマシンが現役なのを
知らなかった上に、C言語の要求を満たせないキャラクタマシンとやら
を引っ張り出してきて、さらに墓穴を掘り下げただけ。

バカって本当にかわいそう

> おまえは、なんでキャラクタマシンのアーキテクチャが珍妙なのか説明しろよ。
まだわかんねーのバカだろ。本当にバカ。
博物館行かなきゃお目にかかれないアーキテクチャだからだよ。
バーカバーカバーカバーカ
大事なことなので四回言いました。
0887デフォルトの名無しさん (ブーイモ MM7f-VS2f)2017/02/20(月) 09:17:56.07ID:Wwty+I+wM
何故833に?
0888ほらよ (ワッチョイ 9b7b-KWkY)2017/02/20(月) 09:19:28.08ID:NnqcO0cq0
>>883
> 俺はバイトマシン以外の番地の付け方もちゃんと説明したよな。
> 1バイトずつ番地が与えられるのはコンピューターの決まりなんだ。
という、無知丸出しのウソ発言に突っ込まれ、何度もみ言い逃れを
繰り返し、あがいた挙句に無理だと観念し、必死にググって
ピコーン そうだ! 他のは昔のコンピュータと言い逃れとようと愚かな
試みをしたけれど、やっぱりバカはバカでワードマシンが現役なのを
知らなかった上に、C言語の要求を満たせないキャラクタマシンとやら
を引っ張り出してきて、さらに墓穴を掘り下げただけ。

バカって本当にかわいそう

> おまえは、なんでキャラクタマシンのアーキテクチャが珍妙なのか説明しろよ。
まだわかんねーのバカだろ。本当にバカ。
博物館行かなきゃお目にかかれないアーキテクチャだからだよ。
バーカバーカバーカバーカ
大事なことなので四回言いました。
0889デフォルトの名無しさん (ワッチョイ 9b7b-3Ih/)2017/02/20(月) 09:49:38.16ID:NnqcO0cq0
>>874
Wikipediaも日本語版しかないと言う謎定義

http://www.encyclopedia.com/computing/dictionaries-thesauruses-pictures-and-press-releases/variable-word-length-computer
によると
> It is then known as a character machine or byte machine respectively.
だそうなので、一部ではバイトマシンと同じ意味で使われ{る|ていた}のかもしれない
0890デフォルトの名無しさん (ワッチョイ 9b7b-3Ih/)2017/02/20(月) 09:51:28.59ID:NnqcO0cq0
しかし、>>889の意味、すなわちバイトマシンの同意語でキャラクタマシン
と呼んだのなら、すでに説明済みなので
>>864
> 昔のワードマシンやキャラクタマシンでのアドレスの付け方を説明せず、
> すみませんでした。
は、矛盾してるし

>>869
日本語版Wikipediaにある定義の「キャラクタマシン」なら
> キャラクタマシンはメジャーだろ。何で珍妙なんだよ
は、さらにおかしい

バカって本当にかわいそうだな。
0891デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 10:10:11.29ID:6ExtSF9k0
アーキテクチャの意味わかってないだろ。
0892デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 10:21:12.02ID:6ExtSF9k0
誰かと話をしたいだけなら病院に行けよ。
キャラクタマシンが普及してたのくらいわかるだろ。

おまえ絶対病気だよ。
0893デフォルトの名無しさん (ワッチョイ fb7b-Mjmn)2017/02/20(月) 10:39:53.97ID:8FjaGYLq0
スレチの話したいなら適切なスレへ行けよ
0894デフォルトの名無しさん (スププ Sd7f-Aztl)2017/02/20(月) 10:41:49.65ID:EsKjTg7qd
C言語スレやぞ
0895デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 11:03:28.74ID:6ExtSF9k0
バイトマシン前提での説明が駄目って言われたから、
番地はバイトマシン、ワードマシン、キャラクタマシンでの付け方があるって言っただけだよ。
それで終わりだろ。

何で今度はキャラクタマシンを持ち出すのはおかしいとか言うんだよ。
それならレアなワードマシンの説明とか要らないだろ。
0896デフォルトの名無しさん (ワッチョイ fb42-P9CU)2017/02/20(月) 11:10:51.85ID:bs0C8KtQ0
雑談はこちらに移動

http://toro.2ch.net/test/read.cgi/tech/1363792124/
0897デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 12:00:43.22ID:6ExtSF9k0
そもそもCができた頃は6bitマシンだろ。
8ビット未満でC言語が動かないって事が間違ってんだよ。
0898デフォルトの名無しさん (ワッチョイ 0f7b-LjcY)2017/02/20(月) 12:35:56.62ID:I1WvFavI0
規格委員会に文句言ってくださいね
0899デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 12:42:19.48ID:6ExtSF9k0
>>897 は >>868 に対してな。
0900デフォルトの名無しさん (ドコグロ MM1f-My/j)2017/02/20(月) 18:48:19.32ID:7yJYF54kM
>>897
PDP-11 は 16bit マシンでバイトアドレッシングが可能
6bit マシンで開発されていたら小文字を使うのが面倒だから
#INCLUDE <STDIO.H>
INT MAIN(){
PRINTF("HELLO WORLD\N";
RETURN 0;
}
ってなってたと思う
0901デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 19:34:01.34ID:6ExtSF9k0
>>900
PDP-10まで6bitだろ?もちろん大文字だけだよ
0902デフォルトの名無しさん (ドコグロ MM1f-My/j)2017/02/20(月) 19:49:06.03ID:7yJYF54kM
>>901
そうだけど、それとC言語になんの関係があるんだ?
0903デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 19:52:24.57ID:6ExtSF9k0
>>902
PDP10用のCコンパイラあるだろ?
0904デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 20:09:49.34ID:NnqcO0cq0
>>895
> キャラクタマシンはメジャーだろ。何で珍妙なんだよ
博物館でしかお目にかかれないもののどこがメジャーなんだ?
0905デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 20:11:57.30ID:6ExtSF9k0
>>904
おまえが珍妙なアーキテクチャって言ったんだろ?

アーキテクチャと現存数と関係ないだろ。

何を言ってるんだ
0906デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 20:21:04.09ID:NnqcO0cq0
>>905
博物館でしかお目にかかれないから珍妙と評したんだが

キャラクタマシンがメジャーというソース出せよ
日本語版Wikipediaとオレが張ったもう一つにしか現れないて無いぞ
0907デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 20:26:34.85ID:6ExtSF9k0
>>906
何を言ってるんだ。

キャラクタマシンとかコボル用でたくさん使われてたろ。
キャラクタマシンのアーキテクチャはメジャーだろっつの。

キャラクタマシンなんか有名だろっつの。おまえしらんのか。
何で事務処理用で普及してたキャラクタマシンのアーキテクチャがマイナーなんだよ。

アホかおまえ。珍妙ってなんだよ。
0908デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 20:28:41.67ID:NnqcO0cq0
>>901
まーた無知振りまいてるのか? 救いようが無いな

pdp10が6ビットというのは純正OSがradix50という符号を使っていただけ
pdp10はバイトマシンだ
0909デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 20:32:27.99ID:NnqcO0cq0
>>907
メジャーだとお前以外が言ってるソースは?

> アホかおまえ。珍妙ってなんだよ。
バカか? 意味も知らずに言いがかりつけてんのか?
珍にして妙だよ バーカ
0910デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 20:33:01.09ID:6ExtSF9k0
>>908

おまえ何いってんの、池沼か。
0911デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 20:35:16.21ID:6ExtSF9k0
>>909
おまえが好きなwikiで、キャラクタマシンのページ貼ってるだろ?
そこにキャラクタマシンは大ヒットしたって書いてるだろう。

なんでそれでマイナーなんだ?
0912デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 20:35:32.03ID:NnqcO0cq0
>>910
ああ、バカにはわからないのか w
こりゃ「キャラクタマシン」理解して無いな w
0913デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 20:39:28.59ID:NnqcO0cq0
Wikipedia(日本語版)がソース w

> メインフレーム(現代のものではACOS-6)やミニコンピュータ(PDP-10など)の1ワード=36ビットのコンピュータにおいて、
> 文字コードをあらわすキャラクタを6ビットとし、36ビット=6キャラクタとして扱い、同時に6文字を処理するものがあった。

これ読んでpdp10はキャラクタマシン きりっ

バカ過ぎる w
0914デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 20:44:14.81ID:6ExtSF9k0
いやいやpdp-10が6bitは知られてるだろ?

pdp-10のCコンパイラも有るんだから、
C言語が8bit以上のマシンで無いと動かないってのはおかしいだろ。

pdp-10をいつキャラクタマシンって言ったよ。
NECの2200とかの事だろ。

>キャラクタマシンは、演算部分のハードウエア量が少なく済むので、コンピュータの価格を押さえることができ、各メーカともキャラクタマシンは大ヒットした。
>また、COBOL言語を処理するのにも適していた。日本のメーカではNECの2200シリーズ(Honeywell 200シリーズのノックダウン生産)が大ヒットした。

ってあるだろ?

おまえいってることおかしいよ。絶対病気だろ
0915デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 20:48:11.32ID:6ExtSF9k0
何で延々と同じ話をしてんだよ
0916デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 20:50:35.06ID:NnqcO0cq0
pdp10がバイトマシンは取り消しておく
バイトアドレスでアクセスできた気がしてたけど特殊な命令らしい
pdp10はワードマシン
0917デフォルトの名無しさん (アウアウカー Sa9f-6x/Q)2017/02/20(月) 20:51:00.97ID:Xjvxr8kEa
6ビットマシンってのはアドレス空間はどれくらいあるもんなの?
0918デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 20:52:08.94ID:6ExtSF9k0
珍妙の意味を理解してない。
メジャーとマイナーの意味を理解してない。
アーキテクチャの意味を理解してない。
一文字が8bit以上でないとCは動かないと思っている。

これどうしろっつの。
0919デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 20:54:36.49ID:NnqcO0cq0
>>914
>pdp-10のCコンパイラも有るんだから、
>C言語が8bit以上のマシンで無いと動かないってのはおかしい
また無知晒してる バーカ バーカ
0920デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 20:58:09.65ID:6ExtSF9k0
じゃあpdp-10のCコンパイラは無いって事だな?
それで良いんだな?
0921デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 20:58:50.67ID:NnqcO0cq0
>>918
>珍妙の意味を理解してない。
珍にして妙
博物館でしかお目にかかれないものをそう呼んだ それが何か?

>メジャーとマイナーの意味を理解してない。
お前以外がメジャーと言っているWikipedia日本語版以外のソースを出せ

>アーキテクチャの意味を理解してない。
メモリアドレッシングはアーキテクチャの重要な要素

>一文字が8bit以上でないとCは動かないと思っている。
C言語の規格書読んで出直せ
0922デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 20:59:37.85ID:NnqcO0cq0
>>920
PDP10はワードマシンだからあるよ 全然矛盾しない
0923デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 21:00:05.07ID:6ExtSF9k0
charが8ビット ってのはC90かC99だろ?

pdp10とかK&Rだろ
0924デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 21:04:10.64ID:6ExtSF9k0
もう無理。こいつ絶対無理。
0925デフォルトの名無しさん (アウアウカー Sa9f-Vuaq)2017/02/20(月) 21:06:17.45ID:j7ytTgeza
どこか別のスレで永遠に言い合っててもらえますか
0926デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 21:07:21.45ID:6ExtSF9k0
さすがに疲れたよ。
0927デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 21:12:24.45ID:6ExtSF9k0
PDP10の36ビットワードってのは6bit+*6だろ。
6の倍数だろ?

もうこれでやめるぞ俺は。
悪いこと言わないから病院行け
0928デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 21:12:49.14ID:NnqcO0cq0
>>856
> 1バイトずつ番地が与えられるのはコンピューターの決まりなんだ。
決まりじゃ無いものを決まりと言い張ろうと無駄に足掻いてドツボにはまった道化
0929デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 21:18:43.85ID:NnqcO0cq0
で、キャラクタがメジャーだと言うソースは?
0930デフォルトの名無しさん (ワッチョイ 5f5b-NHlF)2017/02/20(月) 21:21:30.04ID:6ExtSF9k0
http://www.npointelligence.com/Techno-Intelligence/Theme-C/Theme14(Mainframe)/theme14.html

ほらよ。これで本当に最後だぞ
0931デフォルトの名無しさん (スププ Sd7f-Aztl)2017/02/20(月) 21:55:59.24ID:3AFYiP2ad
歴史じゃん
0932デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/20(月) 23:02:59.12ID:NnqcO0cq0
ただの歴史だな
0933デフォルトの名無しさん (ワッチョイ 5f41-LjcY)2017/02/20(月) 23:17:24.05ID:rV4WoTG+0
歴史です
0934デフォルトの名無しさん (ガラプー KK9f-jCT1)2017/02/21(火) 09:20:31.76ID:QkDHiBD7K
ARMって32ビット単位しか読めないんだっけ?
0935デフォルトの名無しさん (ワンミングク MM7f-VS2f)2017/02/21(火) 10:00:42.89ID:ltD/wwLEM
少なくとも、Coretex-Mはそんな事ないな。
Cでアライメント以外から読むとバイト命令に分解してくれる
0936デフォルトの名無しさん (JP 0H7f-eq+O)2017/02/21(火) 10:43:59.07ID:aWgu+CnVH
for(i = 0;i < n;i++){
scanf("%s", &ball_cnt[i]);

}
for(i = 0;i < n;i++)
if(strcmp(ball_cnt[i] , "ball") )

strcmpのところなんですけど、文字列じゃないみたいなエラーが出ます
どうすればいい?
0937デフォルトの名無しさん (ワッチョイ 0f4f-Z7AI)2017/02/21(火) 10:52:08.88ID:BgWMeE5K0
856からここまで 長い道のりじゃった
0938デフォルトの名無しさん (ワンミングク MM7f-VS2f)2017/02/21(火) 11:03:44.96ID:ltD/wwLEM
>>936
&
0939デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/21(火) 11:52:49.74ID:fKpiZ+wv0
scanfの幅指定無し%s変換は使用禁止
0940デフォルトの名無しさん (ガラプー KK9f-jCT1)2017/02/21(火) 12:33:43.86ID:QkDHiBD7K
幅指定ってなんで%.20sみたいな書き方じゃないの?
0941デフォルトの名無しさん (ドコグロ MM7f-My/j)2017/02/21(火) 12:47:30.12ID:y0kzTLQNM
>>936
エスパーすると
char ball_cnt[10];
を
char ball_cnt[10][100];
にすればいい
0942デフォルトの名無しさん (ドコグロ MM1f-/Y6J)2017/02/21(火) 12:49:03.86ID:dghNTJ/ZM
>>940
そんなみたいな書き方だが
0943デフォルトの名無しさん (JP 0H7f-eq+O)2017/02/21(火) 13:05:31.21ID:xcI3fiLiH
>>941
ありがとうございました
0944デフォルトの名無しさん (フリッテル MMff-SEkl)2017/02/21(火) 14:36:35.36ID:0IEOlzl2M
しかし粘着に絡まれて大変だな
ご愁傷さまお察しします
0945デフォルトの名無しさん (ガラプー KK9f-jCT1)2017/02/21(火) 14:49:04.80ID:QkDHiBD7K
いや
%.20sじゃなくて%20sじゃん
printfのほうは出力する文字数を%.20sみたいにして指定するのに
0946デフォルトの名無しさん (ワッチョイ 9b85-xqG9)2017/02/21(火) 18:54:53.97ID:vHI0u4yb0
https://www.youtube.com/watch?v=UzXTxYUEytU&;t=12s
0947デフォルトの名無しさん (ワッチョイ db6f-Cx8r)2017/02/21(火) 18:57:52.13ID:lv29oxmo0
自分は printf で幅指定はよく使うけど、精度指定はまず使わないな
出力文字数を指定するときに %20s みたいに使って、
入力文字数を指定するときに %20s みたいに使うからわりと対称的
0948デフォルトの名無しさん (ワッチョイ 5b3c-PWPk)2017/02/21(火) 19:02:12.56ID:fi9G+CXq0
浮動小数点は精度指定だけ使うことが多いかも %.1f とか %.3f とか
0949デフォルトの名無しさん (ワッチョイ 9b85-xqG9)2017/02/21(火) 19:06:02.72ID:vHI0u4yb0
%g は使わないのか?
0950デフォルトの名無しさん (ワッチョイ 9b85-xqG9)2017/02/21(火) 19:13:00.02ID:vHI0u4yb0
>>872
それはない、x86 でバリバリC言語してた身としては
http://www.lsi-j.co.jp/freesoft/
0951デフォルトの名無しさん (ワッチョイ fb42-P9CU)2017/02/21(火) 19:39:05.11ID:mvy681QG0
森公一郎氏、亡くなられているんだな
0952デフォルトの名無しさん (ワンミングク MM7f-VS2f)2017/02/21(火) 20:44:29.88ID:ltD/wwLEM
Aztec をApple2で使っていたよ
DOH-CとかBDS-Cも
0953デフォルトの名無しさん (アウアウカー Sa9f-6x/Q)2017/02/21(火) 21:24:05.05ID:I23QSZrAa
>>950
x86って8086のこと?
もちろん16ビットとかPICやらマイコンでもCは使うのは分かるけどさ、32ビットがデフォでもういいんじゃない?めんどくさいじゃん。キャラクタマシンだか何かよくわからん話してたからさ。それだけだよ。

16ビットの環境ならアセンブラのが普通だったけどね。俺の周りではね。それだけじゃないのは分かるよ。
0954デフォルトの名無しさん (ワンミングク MM7f-VS2f)2017/02/21(火) 22:06:56.47ID:ltD/wwLEM
そこで一言多いから当時を知っている人に突っ込まれたり
おちょくられたりするんだがな。
浮川初子さんがインターフェースに一太郎の作り方の記事を書いて
一気に広がったんだよ。LoadRunnerのソース公開の影響もあったが
0955デフォルトの名無しさん (ワッチョイ 0b7b-+OgX)2017/02/21(火) 22:19:46.76ID:C6owlZ6F0
そろそろ32bitすらマイナー扱いになろうとしているご時世だけど
"intが最適の型"などという64bitより前の古代でしか通用しない常識は
いつまで信じ続けられるのだろうか
0956デフォルトの名無しさん (ワッチョイ fb42-P9CU)2017/02/21(火) 22:34:44.51ID:mvy681QG0
CPUの用途なんて色々なんだから
それに応じてintも色々でいいんじゃ
0957デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/21(火) 22:36:11.14ID:fKpiZ+wv0
doubleの方が速いからdoubleにしろとか言い出す老害
0958デフォルトの名無しさん (スププ Sd7f-Aztl)2017/02/21(火) 22:57:59.90ID:YCLculbKd
>>957
え、今は違うの?
0959デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/21(火) 23:52:29.68ID:fKpiZ+wv0
>>958
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.4.4.html
こういう老害に毒されてんだろ

最近は普通にSIMD使うからfloatにすれば並列度倍になる
0960デフォルトの名無しさん (ワッチョイ 5f17-P9CU)2017/02/21(火) 23:59:27.09ID:7xwMLvhY0
つか浮動小数点数なんか使うなよ
0961デフォルトの名無しさん (ワントンキン MM7f-Mjmn)2017/02/22(水) 00:04:36.17ID:skecWnENM
>>959
Copyrightの書かれてる1996年ぐらい昔ならあってるんじゃない?
未だにそのままだと思ってたら老害以外の何者でもないけど
0962デフォルトの名無しさん (ワントンキン MM7f-Mjmn)2017/02/22(水) 00:05:57.09ID:skecWnENM
>>960
レベルの違う老害がここに居た
0963デフォルトの名無しさん (スププ Sd7f-Aztl)2017/02/22(水) 00:09:11.78ID:We9e0t+Dd
>>959
ひええ毒されてたわ。試してみるわありがとう
0964デフォルトの名無しさん (ワッチョイ 5f3c-extS)2017/02/22(水) 00:19:18.37ID:1Gh+3iOh0
float同士の演算ならfloatのほうが速いという認識であってる?
floatが遅いって言われてるのはC言語標準関数がdoubleを受け取るから、
暗黙の型変換の影響で速度が落ちると認識してる。
0965デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/22(水) 01:03:38.58ID:gYGcupo+0
>>963
自動ベクトル化は信用ならねー
intrinsicで並列度倍を実感しろ
0966デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/22(水) 01:10:01.75ID:gYGcupo+0
>>964
K&Rはfloatはdoubleに昇格して演算してたらしい
0967デフォルトの名無しさん (ワッチョイ 9b76-SUxD)2017/02/22(水) 01:30:17.74ID:jhnK2Vaj0
そろそろ10進に最適化されたアーキテクチャとか出てこんものかのう
0968デフォルトの名無しさん (ワッチョイ 5f17-yXFx)2017/02/22(水) 01:51:49.70ID:/6Ihs1O40
機械学習だと小数はfloatの精度で十分なんですが、cでやる時はdoubleを使った方が良いということでしょうか?
0969デフォルトの名無しさん (ワッチョイ fb7b-Mjmn)2017/02/22(水) 02:36:14.01ID:lOsu94SA0
>>967
それ、なにか良いことあんの?
0970デフォルトの名無しさん (ワッチョイ 6f13-eq+O)2017/02/22(水) 05:26:48.70ID:va0ygQi40
>>953
駄目だ,森公一氏に申し訳が立たない
16ビットの環境でもCはそれなりに便利だった

当然,64ビットの環境では,sizeof(int)==8 であるべきだと思っている
0971デフォルトの名無しさん (ワッチョイ 6f13-eq+O)2017/02/22(水) 05:30:15.90ID:va0ygQi40
>>959
普通のCの記述を SIMD に替えてくれるコンパイラなんかあるのか?
0 クリアとか特殊な環境じゃないか?
SIMD を使うには,自力でインラインアセンブラを書くしかないのでは?

SIMD にかわるソースとコンパイラをさらせ
0972デフォルトの名無しさん (ワッチョイ 6f13-eq+O)2017/02/22(水) 05:30:36.15ID:va0ygQi40
>>963
すぐなびかれるやつ‥
0973デフォルトの名無しさん (ワッチョイ 6f13-eq+O)2017/02/22(水) 05:32:30.42ID:va0ygQi40
>>964
少し前は float で書こうと double で書こうと,結局は同じ FPU で処理されるから,速度は同じだった
今は単精度の方が早い演算ユニットがあるとのことだが‥
0974デフォルトの名無しさん (ドコグロ MM9f-My/j)2017/02/22(水) 06:51:17.84ID:sG12pa6iM
>>972
普通に靡く(なびく)でいい
0975デフォルトの名無しさん (ワッチョイ dfc0-fRM8)2017/02/22(水) 07:05:30.17ID:0mdr3Sk20
歴史本の挿絵見てみんなこんな格好すんのかと思い自分もちょんまげ結うみたいな
0976デフォルトの名無しさん (ワッチョイ 6f13-eq+O)2017/02/22(水) 07:07:10.38ID:va0ygQi40
>>971
intrinsics があるねコンパイラ間の互換性はどうかな
0977デフォルトの名無しさん (ワッチョイ 8bfd-Z7AI)2017/02/22(水) 07:48:18.26ID:VKa3Qwp50
多宗教言語。
争いが絶えません…。
0978デフォルトの名無しさん (ワンミングク MM7f-VS2f)2017/02/22(水) 08:23:52.99ID:0bPwhBMCM
フリンの分類なんてインモス社の時代で90年代の話だな
今は普通FPGAで高位合成だし。
0979デフォルトの名無しさん (アウアウカー Sa9f-6x/Q)2017/02/22(水) 08:25:08.78ID:UyPBUJB2a
>>970
分かった分かったw
どっちでもいいよ。そんなことで議論になるのはここだけだから。
ちなみに64ビットでintが8バイトならlongはいくつが正解なの?2バイト、4バイトのデータはどうやって定義するの?
0980デフォルトの名無しさん (ワッチョイ 9b7b-KWkY)2017/02/22(水) 08:57:56.47ID:gYGcupo+0
>>971
この程度の常識を知らない上に検索すらできないのか

さらせじゃなくて教えて下さいだろ
死ねゴミクズ
0981デフォルトの名無しさん (ドコグロ MM7f-/Y6J)2017/02/22(水) 09:13:00.60ID:JYVNL8lSM
>>973
openCLとかGPU演算だとfloatが普通だね

>>979
inttypes.h使えよ
0982デフォルトの名無しさん (ワッチョイ fb7b-NnZO)2017/02/22(水) 09:39:03.53ID:lOsu94SA0
>>971
https://godbolt.org/g/hP3KHc
ほれ
0983デフォルトの名無しさん (ワッチョイ fb7b-NnZO)2017/02/22(水) 09:43:45.44ID:lOsu94SA0
vec3なのに要素4つじゃねえかというもっともなツッコミは主題と関係ないので受け付けません。
0984デフォルトの名無しさん (ブーイモ MM1f-88IT)2017/02/22(水) 09:57:16.74ID:mTbC51LDM
clangもsimd化できるのか
配列をループで回す場合はどうなんだろ
0985デフォルトの名無しさん (フリッテル MMff-SEkl)2017/02/22(水) 10:20:36.68ID:3Ury4/yQM
>>982
ライブラリ使ってるだけじゃねーか
0986デフォルトの名無しさん (ワッチョイ fb7b-Mjmn)2017/02/22(水) 10:27:26.29ID:lOsu94SA0
>>985
ちょっとなに言ってるのか分かりません…
誰か翻訳お願いします…
0987デフォルトの名無しさん (ワッチョイ fb7b-NnZO)2017/02/22(水) 10:36:50.46ID:lOsu94SA0
もしかしてC言語スレなのにC++の高度な機能"参照"を使っちゃったから
>>985 の脳内Parserがバグっちゃったのかな…?

https://godbolt.org/g/odjVPD

C言語だけで書き直したので許してください。
0988デフォルトの名無しさん (JP 0H1f-vlft)2017/02/22(水) 10:56:08.12ID:T1tKwjPzH
入力不正はバグじゃないだろ
0989デフォルトの名無しさん (ワントンキン MM7f-Mjmn)2017/02/22(水) 11:06:20.15ID:skecWnENM
>>988
入力と全く関係ない出力だしてたらメモリ破壊を疑うレベルのバグでしょ
0990デフォルトの名無しさん (ガラプー KK9f-jCT1)2017/02/22(水) 11:09:26.09ID:YkHu5T7KK
8進数で表示ってどうやんの?
0991デフォルトの名無しさん (JP 0H1f-vlft)2017/02/22(水) 11:15:06.44ID:T1tKwjPzH
%o
0992デフォルトの名無しさん (JP 0H7f-eq+O)2017/02/22(水) 14:22:54.50ID:0ByvbR5mH
fprintf(stderr, "エラー: ファイルがオープンできません: %s\n", filename);

inputfile = fopen("a.txt", "r");
if (inputfile == NULL) {
fprintf(stderr, "エラー: ファイルがオープンできません\n");
exit(1);
}
2つの違いって何?
0993デフォルトの名無しさん (ワッチョイ 0b7b-+OgX)2017/02/22(水) 18:57:21.56ID:xeEkzIw00
C言語なら俺に聞け 139
http://echo.2ch.net/test/read.cgi/tech/1487757355/
0994デフォルトの名無しさん (ワッチョイ de7b-yCfG)2017/02/23(木) 04:56:21.10ID:gBe3T0DV0
うめ
0995デフォルトの名無しさん (ワッチョイ 2317-lJUo)2017/02/23(木) 04:58:40.29ID:ZvvhW9wz0
たけ
0996デフォルトの名無しさん (ワッチョイ bf7b-FQj1)2017/02/23(木) 05:02:08.03ID:9COuC8bh0
まつ
0997デフォルトの名無しさん (ブーイモ MMc7-9rcX)2017/02/23(木) 12:04:56.67ID:Y2IzSc+YM
きり
0998デフォルトの名無しさん (ワッチョイ 03a1-qQc9)2017/02/23(木) 14:01:17.47ID:/SYc2KR20
printfってすごいね
0999デフォルトの名無しさん (ワッチョイ 6b7b-JtgB)2017/02/23(木) 15:26:17.93ID:lA8ifvC90
ぼうず
1000デフォルトの名無しさん (ワッチョイ 233b-8xjF)2017/02/23(木) 16:51:52.86ID:PCt9ZqJm0
憎けりゃ袈裟まで
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 74日 19時間 37分 57秒
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。